7.3.60. suggest#

注釈

サジェスト機能の仕様はまだ確定していません。仕様は変更される可能性があります。

7.3.60.1. 概要#

suggest - 指定されたクエリーに対する補完・補正・提案候補を返す。

suggestコマンドは指定されたクエリーに対する補完・補正・提案候補を返します。

補完・補正・提案については はじめに を参照してください。

7.3.60.2. 構文#

suggest types
        table
        column
        query
        [sortby=-_score]
        [output_columns=_key,_score]
        [offset=0]
        [limit=10]
        [frequency_threshold=100]
        [conditional_probability_threshold=0.2]
        [prefix_search=auto]

7.3.60.3. 使い方#

以下は補完用の学習データです。

実行例:

load --table event_query --each 'suggest_preparer(_id, type, item, sequence, time, pair_query)'
[
{"sequence": "1", "time": 1312950803.86057, "item": "e"},
{"sequence": "1", "time": 1312950803.96857, "item": "en"},
{"sequence": "1", "time": 1312950804.26057, "item": "eng"},
{"sequence": "1", "time": 1312950804.56057, "item": "engi"},
{"sequence": "1", "time": 1312950804.76057, "item": "engin"},
{"sequence": "1", "time": 1312950805.86057, "item": "engine", "type": "submit"}
]
# [[0,1337566253.89858,0.000355720520019531],6]

以下は補正用の学習データです。

実行例:

load --table event_query --each 'suggest_preparer(_id, type, item, sequence, time, pair_query)'
[
{"sequence": "2", "time": 1312950803.86057, "item": "s"},
{"sequence": "2", "time": 1312950803.96857, "item": "sa"},
{"sequence": "2", "time": 1312950804.26057, "item": "sae"},
{"sequence": "2", "time": 1312950804.56057, "item": "saer"},
{"sequence": "2", "time": 1312950804.76057, "item": "saerc"},
{"sequence": "2", "time": 1312950805.76057, "item": "saerch", "type": "submit"},
{"sequence": "2", "time": 1312950809.76057, "item": "serch"},
{"sequence": "2", "time": 1312950810.86057, "item": "search", "type": "submit"}
]
# [[0,1337566253.89858,0.000355720520019531],8]

以下は提案用の学習データです。

実行例:

load --table event_query --each 'suggest_preparer(_id, type, item, sequence, time, pair_query)'
[
{"sequence": "3", "time": 1312950803.86057, "item": "search engine", "type": "submit"},
{"sequence": "3", "time": 1312950808.86057, "item": "web search realtime", "type": "submit"}
]
# [[0,1337566253.89858,0.000355720520019531],2]

以下は補完例です。

実行例:

suggest --table item_query --column kana --types complete --frequency_threshold 1 --query en
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   {
#     "complete": [
#       [
#         1
#       ],
#       [
#         [
#           "_key",
#           "ShortText"
#         ],
#         [
#           "_score",
#           "Int32"
#         ]
#       ],
#       [
#         "engine",
#         1
#       ]
#     ]
#   }
# ]

以下は補正例です。

実行例:

suggest --table item_query --column kana --types correct --frequency_threshold 1 --query saerch
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   {
#     "correct": [
#       [
#         1
#       ],
#       [
#         [
#           "_key",
#           "ShortText"
#         ],
#         [
#           "_score",
#           "Int32"
#         ]
#       ],
#       [
#         "search",
#         1
#       ]
#     ]
#   }
# ]

以下は提案例です。

実行例:

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
#       ]
#     ]
#   }
# ]

以下は補完・補正・提案を混ぜた例です。

実行例:

suggest --table item_query --column kana --types complete|correct|suggest --frequency_threshold 1 --query search
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   {
#     "complete": [
#       [
#         2
#       ],
#       [
#         [
#           "_key",
#           "ShortText"
#         ],
#         [
#           "_score",
#           "Int32"
#         ]
#       ],
#       [
#         "search",
#         2
#       ],
#       [
#         "search engine",
#         2
#       ]
#     ],
#     "correct": [
#       [
#         1
#       ],
#       [
#         [
#           "_key",
#           "ShortText"
#         ],
#         [
#           "_score",
#           "Int32"
#         ]
#       ],
#       [
#         "search",
#         2
#       ]
#     ],
#     "suggest": [
#       [
#         2
#       ],
#       [
#         [
#           "_key",
#           "ShortText"
#         ],
#         [
#           "_score",
#           "Int32"
#         ]
#       ],
#       [
#         "search engine",
#         1
#       ],
#       [
#         "web search realtime",
#         1
#       ]
#     ]
#   }
# ]

7.3.60.4. 引数#

types

suggestコマンドでどの種類の候補を返すかを指定します。

指定できる種類は以下の通りです。

complete

補完を実行します。

correct

補正を実行します。

suggest

提案を実行します。

1つ以上の種類を指定できます。複数の種類を指定する場合は | で区切ります。以下が例です。:

補正候補を返します:

correct

補正候補と提案候補を返します:

correct|suggest

補完候補と補正候補と提案候補を返します:

complete|correct|suggest
table

item_${データセット名} というフォーマットのテーブル名を指定します。例えば、以下のコマンドでデータセットを作成した場合はテーブル名として item_query を指定します:

groonga-suggest-create-dataset /tmp/db-path query
column

table で指定したテーブルにあるふりがな情報を含むカラムを指定します。ふりがなはカタカナで指定します。

query

補完・補正・提案対象のクエリーを指定します。

sortby

ソートキーを指定します。

Default:

-_score

output_columns

出力するカラムを指定します。

Default:

_key,_score

offset

返されるレコードのオフセットを指定します。

Default:

0

limit

返されるレコード数を指定します。

Default:

10

frequency_threshold

出現頻度に対する閾値を指定します。返されるレコードの _score 値は frequency_threshold 以上になります。

Default:

100

conditional_probability_threshold

条件付き確率に対する閾値を指定します。学習データに対して条件付き確率を使います。ここで使う条件付き確率は、入力した query と同じ入力があったときにクエリが検索された確率です。返されるレコードの条件付き確率は conditional_probability_threshold 以上になります。

Default:

0.2

prefix_search

補完時に前方一致検索を実行するかどうかを指定します。

指定可能な値は以下の通りです。

yes

常に前方一致検索を実行します。

no

前方一致検索を実行しません。

auto

他の検索でレコードが見つからない場合のみ前方一致検索を実行します。

Default:

auto

similar_search

補正時に類似検索を実行するかどうかを指定します。

指定可能な値は以下の通りです。

yes

常に類似検索を実行します。

no

類似検索を実行しません。

auto

他の検索でレコードが見つからない場合のみ類似検索を実行します。

Default:

auto

7.3.60.5. 戻り値#

返されるJSON形式は以下の通りです:

{"type1": [["candidate1", score of candidate1],
           ["candidate2", score of candidate2],
           ...],
 "type2": [["candidate1", score of candidate1],
           ["candidate2", score of candidate2],
           ...],
 ...}

type

types で指定した値。

candidate

補完・補正・提案候補。

score of candidate

対応する candidate のスコアです。スコアが高いほど補完・補正・提案候補として有力という意味になります。デフォルトでは候補は score of candidate の降順でソートされています。

7.3.60.6. 参考#