Redisでオートコンプリート (1)前方一致

redisRedisを使ったいろいろな autocomplete のアルゴリズムをメモ。

  1. 前方一致
  2. zrange 範囲指定
  3. @antirez
  4. trie
  5. inverted index

前方一致

まずは一番シンプルな実装。
SQL の % 部分一致の KVS 版。

サジェスト時には、全キーを取得し(LRANGE)、検索文字列と前方一致するキーを候補として返す。

LRANGE の計算量は O(StartOffset+NumberOfElement) のため、キーが増えるとスケールしない。

キーの追加

候補となるキーを LPUSH で追加する。

> lpush key foo
(integer) 1
> lpush key bar
(integer) 2
> lpush key baz
(integer) 3

サジェスト

LRANGE key 0 -1 で全キーを取得する。

> lrange key 0 -1
1) "baz"
2) "bar"
3) "foo"

あとは、各キーが検索文字列と前方一致するかチェックし、一致すればサジェスト候補で返す。

References

Advertisements
Tagged with: ,
Posted in algorithm, database
3 comments on “Redisでオートコンプリート (1)前方一致

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
%d bloggers like this: