Redis University RU201 - Minggu Ke-2

Redis University RU201 - Minggu Ke-2

Ini adalah catatan minggu ke-2 dari apa yang saya pelajari di kelas RU201-nya Redis University yang berjudul "RediSearch".

Pada minggu ke-2 topik pembahasannya adalah seputar penggunaan query pada RediSearch.

Bingung juga mau nyatetnya gimana, langsung ke contoh querynya ajalah ya. Btw query SELECT yang saya tulis pada komentar dibawah itu bukan SQL beneran, semacam pseudo-code SQL aja.

# Membuat index articles, ini sama kayak buat table di RDBMS
FT.CREATE articles SCHEMA title TEXT WEIGHT 5.0 body TEXT author_name TEXT

# Menambahkan artikel ke index articles, ini sama kayak insert data ke table
# Syntax: FT.ADD index_name id score FIELDS field value [{field} {value}...]
FT.ADD articles articles 123 0.5 FIELDS title "Lorem Ipsum" body "Lorem ipsum dolor sit amet" author_name "John Doe"

# SELECT * FROM articles WHERE somehow match "lorem"
FT.SEARCH articles "lorem" LIMIT 0 10
1) (integer) 1  # count
2) "123"        # ID
3) 1) "title"
   2) "Lorem Ipsum"
   3) "body"
   4) "Lorem ipsum dolor sit amet"
   5) "author_name"
   6) "John Doe"

# SELECT * FROM articles WHERE somehow match "lorem" OR "ipsum"
FT.SEARCH articles "lorem|ipsum"

# SELECT * FROM articles WHERE somehow match "lorem" AND "ipsum"
FT.SEARCH articles "lorem ipsum"

# SELECT * FROM articles WHERE somehow match "lorem ipsum"
FT.SEARCH articles "\"lorem ipsum\""

# SELECT * FROM articles WHERE somehow match "lorem" AND not contains "ipsum"
FT.SEARCH articles "lorem -ipsum"

# SELECT * FROM articles WHERE somehow match "lorem" OR not contains "ipsum"
FT.SEARCH articles "lorem|-ipsum"

# SELECT * FROM articles WHERE anyfields LIKE "lorem%"
FT.SEARCH articles "lorem*"

# SELECT * FROM articles WHERE levehnstein(index) sounds like "lorem"
FT.SEARCH articles "%lorem%"

# SELECT * FROM articles WHERE (somehow match "lorem" AND "ipsum") OR somehow match "foo"
FT.SEARCH articles "(lorem ipsum)|foo"

# SELECT * FROM articles WHERE (somehow match "lorem" AND "ipsum") OR (somehow match "foo" AND "bar")
FT.SEARCH articles "(lorem ipsum)|(foo bar)"

# SELECT * FROM articles WHERE (somehow match "lorem" AND "ipsum") OR not contains "foo"
FT.SEARCH articles "(lorem ipsum)|-foo"

Dokumentasi selengkapnya tentang FT.CREATE, FT.ADD, dan FT.SEARCH bisa dilihat pada link dibawah ini:

Selanjutnya adalah memahami hasi dari FT.EXPLAIN. Buat kamu yang terbiasa dengan RDBMS mungkin sudah familiar dengan perintah explain, ya perintah ini digunakan untuk menjabarkan query. Di RediSearch sendiri FT.EXPLAIN ini digunakan untuk menjabarkan query pencarian (FT.SEARCH).

Berikut adalah contoh penggunaan FT.EXPLAIN beserta penjelasannya.

FT.EXPLAIN articles "lorem ipsum"
INTERSECT {
  UNION { 
    lorem
    <LRM(expanded)
    +lorem(expanded)
  }
  UNION {
    ipsum
    <APSM(expanded)
    +ipsum(expanded)
  }
}

Haduh, gimana jelasinnya ya. Mesti pakai gambar ini. Nanti deh saya buatin. Sementara silahkan bandingin sendiri aja sama hasil explain dibawah ini:

FT.EXPLAIN articles "lorem"
UNION {
  lorem
  <LRM(expanded)
  +lorem(expanded)
}

FT.EXPLAIN articles "lorem|ipsum"
UNION {
  UNION {
    lorem
    <LRM(expanded)
    +lorem(expanded)
  }
  UNION {
    ipsum
    <APSM(expanded)
    +ipsum(expanded)
  }
}

FT.EXPLAIN articles "\"lorem\""
"lorem"

FT.EXPLAIN articles "\"lorem\"|ipsum"
UNION {
  lorem
  UNION {
    ipsum
    <APSM(expanded)
    +ipsum(expanded)
  }
}

FT.EXPLAIN articles "\"lorem\" ipsum"
INTERSECT {
  lorem
  UNION {
    ipsum
    <APSM(expanded)
    +ipsum(expanded)
  }
}

FT.EXPLAIN articles "\"lorem\" -ipsum"
INTERSECT {
  lorem
  NOT{
    ipsum
  }
}

Dari beberapa hasil explain diatas, saya sih ngerti ya, soalnya sambil keinget sama penjelasan di videonya. Cuma nanti kalau ada waktu saya coba gambarin pakai venn diagram deh.


Yaudah segitu aja untuk minggu ke-2 di RU201. Saat saya nulis ini sebetulnya sudah masuk minggu ke-3, tapi mungkin saya akan nulis minggu ke-3 nanti di minggu ke-4. Jadi segitu aja catatan minggu ini, bye.

Suka artikel ini?

Saya biasanya share artikel-artikel terbaru via facebook atau fanpage foobarology saya. Kalau mau dapat updatenya, di add friend/like/follow aja link-link dibawah ini 😃

Facebook Foobarology