このセクションでは以下の補完機能について説明します。:
提案機能は提案する語を計算するために1種類の検索を使います。:
- 学習したデータを共起検索。
共起検索はユーザの入力と関連する語を検索します。共起検索ではユーザの実行したときの検索クエリを使います。このデータはクエリログやアクセスログなどから学習します。
例えば、ユーザが以下のように検索を実行したとします。:
クエリ |
---|
search engine |
web search realtime |
groongaは以下のような提案ペアを作成します。
入力 | 提案される語 |
---|---|
search | search engine |
engine | search engine |
web | web search realtime |
search | web search realtime |
realtime | web search realtime |
これらのペアは以下の手順で作成します。:
- ユーザの入力をTokenDelimitトークナイザーでトークナイズします。TokenDelimitは空白をトークンの区切りに使います。(例えば、"search engine"は"search"トークンと"engine"トークンの2つのトークンにトークナイズされます。)
- 各トークンについて、トークンと元のクエリからなるペアを作成する。
ユーザが"search"と入力したとき、共起検索は"search engine"と"web search raltime"を返します。これは、"search"が2つの「入力」カラムに含まれていて、対応するそれぞれの「提案される語」カラムの値が"search engine"と"web search realtime"だからです。
groongaは提案機能を使うために suggest コマンドを用意しています。 --type suggest オプションを使うと提案機能を利用できます。
例えば、"search"と入力した時の提案結果を取得するコマンドは以下の通りです。:
実行例:
suggest --table item_query --column kana --types suggest --frequency_threshold 1 --query search
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# {
# "suggest": [
# [
# 2
# ],
# [
# [
# "_key",
# "ShortText"
# ],
# [
# "_score",
# "Int32"
# ]
# ],
# [
# "search engine",
# 1
# ],
# [
# "web search realtime",
# 1
# ]
# ]
# }
# ]
共起検索は学習データを使います。学習データはクエリログやアクセスログなどを元に作成します。学習データを作成するには、タイムスタンプ付きの入力シーケンスと、タイムスタンプ付きの検索実行時の入力内容が必要です。
例えば、ユーザが"engine"で検索したいとします。ユーザが以下のようなシーケンスで検索クエリを入力したとします。:
- 2011-08-10T13:33:25+09:00: search engine (検索実行)
- 2011-08-10T13:33:28+09:00: web search realtime (検索実行)
以下のコマンドで上記の検索実行結果から学習します。:
load --table event_query --each 'suggest_preparer(_id, type, item, sequence, time, pair_query)'
[
{"sequence": "1", "time": 1312950803.86057, "item": "search engine", "type": "submit"},
{"sequence": "1", "time": 1312950808.86057, "item": "web search realtime", "type": "submit"}
]