NAVERクラウドプラットフォーム商品の使用方法をより詳しく提供し、様々なAPIの活用をサポートするために[説明書]と[APIリファレンス]を分けて提供しています。
Search Query
summary
- 検索のためのSearchAPIを提供します。
- 検索サービスの構成のためには検索に関する基本知識が必要です。
- サービス作成の際に設定した文書設定、インデックス設定(Schema config)で検索を実行
REQUEST BODY SEARCH
- HTTP POST methodで検索をリクエスト
- JSON形式のqueryDSLを使用
overview
{
"start": (string|int),
"display": (string|int),
"result_format": (string),
"search": {
"[index_name]": {
"[query_method]": [{
"query": (string),
"name": (string),
"type": (string),
"option": (string|bool),
"ratio": (string|double),
"term_extractor": (string),
"syno": (bool)
}]
}
},
"sort": {
"[sort_target]": (string)
},
"scope": {
"[scope_target]": {
"[scope_method]": (string|int|double|array)
}
},
"key_scope": {
"[scope_method]": (string|array)
},
"user_scope": (string),
"highlighting": {
"enable": (string|bool),
"pre_tag": (string),
"post_tag": (string),
"[highlighting_option]": (string|bool)
},
"display_section": (string|array),
"passage": {
"[section_name]": {
"passage_type": (string),
"passage_option": (string),
"max_length": (string)
},
},
"aggregate": {
"[docprop_name]": {
"max": (string),
"min": (string),
"one": (string),
"sum": (string)
}
},
"result_processing": {
"[section_name]": {
"remove_duplicate": (string|bool)
}
},
"setting": {
"transfer_timeout": (string|int),
"search_timeout": (string|int),
"use_df": (string|bool),
"reuse_term_extractor": (string|bool),
"log_level": (string|list),
}
}
start / display
検索結果を表示する範囲を選択します。
Format
{
"start": (string|int), "display": (string|int)
}
- start:検索結果のスタートランキング、基本値は1です。
- display:検索結果の個数、基本値は20です。
Example
{
"start": 1, "display": 20,
"search": {
"body_sgmt": {
"main": {
"query": "検索",
}
}
},
}
result_format
検索結果のフォーマットを指定します。 基本値はjsonフォーマットです。
Format
{
"result_format": (string)
}
- result_format:検索結果のフォーマットを指定します。 使用可能な値はjson、xmlです。
Example
{
"search": {
"body_sgmt": {
"main": {
"query": "検索",
}
}
},
"result_format": "json"
}
search
検索のためのパラメータです。 [index_name]、[query_method]を指定して検索を実行します。 searchパラメータは必須パラメータです。
Format
{
"search": {
"[index_name]": {
"[query_method]": {
"query": (string),
"name": (string),
"type": (string),
"option": (string),
"ratio": (string|double),
"term_extractor": (string)
}
}
}
}
- [index_name]:検索するインデックス対象を指定します。
- [query_method]:検索方法を選択します。
- main:検索リクエストの際に必ず必要で、「main query」は検索結果集合の和集合演算を行います。
- intersection:「main query」の検索結果集合と「intersection query」で得た結果集合の積集合演算を行います。
- scope:「scope query」は「intersection query」と効果は同じですが、文書クエリスコア(qds)に関わりません。
- exclusion:「exclusion query」は「main、intersection、scope query」の検索結果と「exclusion query」で得た検索結果を差集合演算した結果です。
- rerank:「rerank query」は検索結果に影響を与えませんが、qds値の変更に使用されます。 使用できるquery typeはsimbst、proxrankがあります。
- query:検索クエリを指定します。
- name:検索の際に使用するクエリ名を指定します。
- type:queryタイプを指定します。
- oneterm:単語が一つの場合に使用し、その単語を含む文書を検索します。
- nterm:単語が複数の場合に使用できます。 その単語を含む文書を検索します。 「option」パラメータを使用できます。
- nofm:すべての単語の中から「ratio」パラメータで与えられた割合以上が含まれている文書を検索します。
- ebool:boolean演算子(and、or)を組み合わせた結果を満たす文書を検索します。
- ユーザーが入力した演算子をはじめ、複数の演算子を利用して検索。
- インデックスキーワードと演算子の関係をpostorder形式で構成してブール演算式を作成
- 使用可能な演算子:AND(&)、OR(|)、NOT(!)
- 検索ユーザーが直接演算子を入力でき、この場合、演算子として認識するには&、|、!演算子の左右に空白が含まれる必要があります。
- simbst:検索した文書の中でクエリ単語を含む文書は「ratio」パラメータで与えられた値だけqdsを上げます。
- proxrank:近接度(prox)を計算します。
- null:空クエリで全体文書を検索します。
- option:queryタイプのオプションを指定します。
- and:与えられたすべての単語が含まれている文書のみ検索します。
- or:与えられた単語の中で一つでも含まれている文書をすべて検索します。
- ratio:特定queryタイプの割合を指定します。 (nofm、simbsttypeの場合に使用)
- term_extractor:検索クエリタームの抽出方法を指定します。 基本値は指定されたインデックスのインデックスオプションです。 現在は韓国語のみ対応しています。
- syno:同義語辞典の使用有無を選択します。
Example
searchパラメータの例です。
method別の例
- main query
{ "search": { "body_sgmt": { "main": { "query": "検索", "type": "nterm", "option": "and" } } } }
intersection query
{ "search": { "body_sgmt": { "main": { "query": "検索", "type": "nterm", "option": "and" }, "intersection": { "query": "いいね", "type": "nterm", "option": "and" } } } }
scope query
{ "search": { "body_sgmt": { "main": { "query": "検索", "type": "nterm", "option": "and" }, "scope": { "query": "いいね", "type": "nterm", "option": "and" } } } }
- exclusion query
{ "search": { "body_sgmt": { "main": { "query": "検索", "type": "nterm", "option": "and" }, "exclusion": { "query": "ひどいね", "type": "nterm", "option": "and" } } } }
- rerank query
{ "search": { "body_sgmt": { "main": { "query": "検索", "type": "nterm", "option": "and" }, "rerank": { "query": "いいね", "type": "simbst", "ratio": 0.7 } } } }
- main query
type別の例
- oneterm type
{ "search": { "body_sgmt": { "main": { "query": "検索", "type": "oneterm" } } } }
- nterm type
{ "search": { "title_sgmt": { "main": { "query": "検索がいいね", } } } }
- nofm type
{ "search": { "body_sgmt": { "main": { "query": "検索がいいね", "type": "nofm", "ratio": 0.7 } } } }
- ebool type
{ "search": { "body_sgmt": { "main": { "query": "検索 | いいね&やだね! だめだね" , "type": "ebool" } } } }
simbst type
{ "search": { "body_sgmt": { "main": { "query": "テスト" }, "rerank": { "query": "検索", "type": "simbst", "ratio": 0.7 } } } }
proxrank type
{ "search": { "title_sgmt": { "main": { "query": "テスト" }, "rerank": { "query": "検索", "type": "proxrank", "option": "exprox" } } } }
null type
{ "search": { "body_sgmt": { "main": { "type": "null" } } } }
- oneterm type
sort
検索結果のソート基準のためのパラメータです。 [sort_target]、[sort_option]を指定して検索結果のソートを実行します。
Format
{
"sort": {
"[sort_target]": [sort_option](string)
}
}
- [sort_target]:ソート基準を指定します。 (文書プロパティとランキングモジュールの変数を指定できます。)
- [sort_option]:ソート方法を指定します。 使用可能な値はdesc(降順)、asc(昇順)です。
Example
sortパラメータの例です。
{
"search": {
"body_sgmt": {
"main": {
"query": "検索",
}
}
},
"sort": {
"dp_pubdate": "desc"
}
}
scope
制限検索のためのパラメータです。 [scope_target]、[scope_method]を指定して制限検索を実行します。
Format
{
"scope": {
"[scope_target]": {
"[scope_method]": (string|int|double|array)
}
}
}
- [scope_target]:制限検索対象を指定します。 (文書プロパティとランキングモジュールの変数を指定できます。)
- [scope_method]:制限検索方法を選択します。
- exist、nexist:指定した値が存在する文書プロパティに検索結果を制限します。
- range、nrange:指定した範囲の値が存在する文書プロパティに検索結果を制限します。 (gte:lte)
- gte、gt、lte、lt:指定した範囲の値が存在する文書プロパティに検索結果を制限します。(gte:大きいか同じ、gt:大きい、lte:小さいか同じ、lt:小さい)
- bit、nbit:指定したビットの値と文書プロパティを演算して、真、偽の場合の文書に検索結果を制限します。
- bitmask:指定したビットの値と文書プロパティをbitmask演算して、真の場合の文書に検索結果を制限します。
Example
exist/nexist
{ "search": { "body_sgmt": { "main": { "query": "検索", } } }, "scope": { "dp_docprop1": { "exist": 1, "nexist": [1,2,3,4,5], }, "dp_docprop2": { "nexist": 5 } } }
range/nrange
{ "search": { "body_sgmt": { "main": { "query": "検索", } } }, "scope": { "dp_docprop1": { "range": ["1", "10"], "nrange": ["1", "10"] }, "dp_docprop2": { "range": ["2", "5"] } } }
gte/gte/lte/lt
{ "search": { "body_sgmt": { "main": { "query": "検索", } } }, "scope": { "dp_docprop": { "gte": "0", "gt": "0", "lte": "1", "lt": "1" } } }
bit/nbit/bitmask
{ "search": { "body_sgmt": { "main": { "query": "検索", } } }, "scope": { "dp_docprop": { "bit": "11110000", "nbit": "10101010", "bitmask": "11110000" } } }
key_scope
key制限検索のためのパラメータです。 [scope_method]を指定して制限検索を実行します。
Format
{
"key_scope": {
"[key_scope_method]": (string|array)
}
}
- [key_scope_method]:文書キーの制限検索方法を選択します。
- exist、nexist:指定した文書キーに該当する文書に検索結果を制限します。
Example
- exist/nexist
{ "search": { "body_sgmt": { "main": { "query": "検索", } } }, "key_scope": { "exist": "A017a75c_000000000001fca5990e8e04", "nexist": ["A017a75c_000000000001fca5990e8e10", "A017a75c_000000000001fca5990e8e20"] } }
user_scope
ユーザーが直接scope数式を入力するためのパラメータです。
Format
{
"user_scope": (string)
}
- user_scope:ランキングコード形式のscope数式を入力します。 入力された数式は「scope」パラメータの内容とand条件で追加されます。
Example
{
"search": {
"body_sgmt": {
"main": {
"query": "検索",
}
}
},
"user_scope": "(dp_like_cnt => 100) and (dp_like_cnt <= 600)"
}
{
"search": {
"body_sgmt": {
"main": {
"query": "検索",
}
}
},
"user_scope": "(dp_grade == 1) or (dp_grade == 2)"
}
highlighting
検索クエリに対する構文強調を設定するためのパラメータです。
Format
"highlighting": {
"enable": (string|bool),
"pre_tag": (string),
"post_tag": (string),
"[highlighting_option]": (string|bool)
}
- enable:ハイライト有無を選択します。 基本値は
true
です。 - pre_tag、post_tag:検索の際にマッチするタームに対して構文強調タグを指定します。 指定しない場合、基本的に
<b>、</b>
が使われます。 - highlighting_option:構文強調オプションを指定します。 基本値は
false
です。- remove_html_tag:このオプションが有効化状態の場合は、HTMLタグを外します。
- skip_html_tag:このオプションが有効化状態の場合は、HTMLタグをハイライトするか、タグに含まれている文字を変更せずにそのまま維持します。
- braket_as_tag:このオプションが有効化状態の場合は、<と > の間はすべてHTMLタグと見なします。
- num_entity_as_char:このオプションが有効化状態の場合は、가のような数字型エンティティを文字のように取り扱います。 ハイライトもそのエンティティを文字として取り扱って実行します。
- skip_char_entity:このオプションが有効化状態の場合は、文字型エンティティをハイライトするか、含まれている文字を変更せずにそのまま維持します。
- kata_to_hira:このオプションが有効化状態の場合は、互いに対応する日本語のカタカナとひらがなを同じ文字として取り扱います。
- bold_sub_query:このオプションが有効化状態の場合は、クエリと完全に一致する文字列を発見しても部分キーワードをすべてハイライトします。
- bold_sub_english:このオプションが有効化状態の場合は、英単語の一部がキーワードと一致する場合もハイライトします。 例えば、キーワードが"a"の場合、"about"の頭文字の"a"をハイライトします。
- bold_sub_digit:このオプションが有効化状態の場合は、数字の一部がキーワードと一致する場合もハイライトします。 例えば、キーワードが"1"の場合、"12345"の最初の数字"1"をハイライトします。
- bold_sub_hanja:このオプションが有効化状態の場合は、漢字のハイライトを制限しません。
Example
{
"search": {
"body_sgmt": {
"main": {
"query": "検索",
}
}
},
"highlighting": {
"enable": true,
"pre_tag": "<b>",
"post_tag": "</b>",
"remove_html_tag": true,
"skip_html_tag": true,
"num_entity_as_char": false,
"braket_as_tag": false,
"skip_char_entity": true,
"kata_to_hira": false,
"bold_sub_query": false,
"bold_sub_english": true,
"bold_sub_digit": true,
"bold_sub_hanja": false,
}
}
display_section
検索結果を読み取るセクションを指定するパラメータです。 そのパラメータを指定しないと、全体セクションの結果を読み取ります。 セクションを指定すると、選択したセクションの結果のみ読み取ります。
Format
{
"display_section": (string|array),
}
- display_section:基本文書の読み取りオプションで読み取るセクションを指定します。 複数のセクションを組み合わせることができます。(例:TITLE+BODY)
Example
- display_section
{ "search": { "body_sgmt": { "main": { "query": "検索", } } }, "display_section": ["TITLE","BODY","CONTENTS","TITLE+BODY"], "display_section": "TITLE,BODY,CONTENTS,TITLE+BODY" }
passage
検索結果を読み取る方法を指定するパラメータです。 そのパラメータを指定しないと、全体セクションの結果を読み取ります。 セクションを指定すると、選択したセクションの結果のみ読み取ります。
Format
{
"passage": {
"[section_name]": {
"passage_type": (string),
"passage_option": (string),
"max_length": (string|int)
}
}
}
- [section_name]:セクション名を指定します。 複数のセクションを組み合わせることができます。(例:TITLE+BODY)
- passage_type:passageの抽出方法を指定します。
- none:セクションの前の部分から読み取ります。
- classic:セクションでクエリインデックスキーワードの周辺を読み取ります。
- passage_option:passageの抽出オプションを指定します。 (CBT範囲外です)
- max_length:passageの抽出の長さを指定します。
Example
{
"search": {
"body_sgmt": {
"main": {
"query": "検索",
}
}
},
"passage": {
"TITLE": {
"passage_type": "classic",
"passage_option": "mspcnt=1;rmtag=on;",
"max_length": 400
},
"TITLE+BODY": {
"passage_type": "classic",
"passage_option": "mspcnt=1;rmtag=on;",
"max_length": 500
}
}
}
aggregate
要約検索のためのパラメータです。
Format
{
"aggregate": {
"[docprop_name]": {
"max": (string),
"min": (string),
"one": (string),
"sum": (string)
}
}
}
- [docprop_name]:要約検索の基準になる文書プロパティを指定します。
- max:要約検索のmax演算対象を指定します。
- min:要約検索のmin演算対象を指定します。
- one:要約検索のone演算対象を指定します。
- sum:要約検索のsum演算対象を指定します。 '_1'キーワードを使用する際は要約された結果の数を取得します。
Example
{
"search": {
"body_sgmt": {
"main": {
"query": "検索",
}
}
},
"aggregate": {
"dp_like_cnt": {
"max": ["dp_like_cnt", "dp_dislike_cnt"],
"min": ["dp_like_cnt", "dp_disklike_cnt"],
"one": "dp_like_cnt",
"sum": "_1"
}
}
}
ranking
- ランキングを指定するパラメータです。 登録されたランキングモジュール名またはコードで検索テストを行うことができます。
format
{
"ranking": {
"name": (string),
"code": (string),
"override_value": {
"[ranking_value]" : (string|int|float)
}
}
}
example
登録されたランキングモジュールを選択して検索
{
"search": {
"body_sgmt": {
"main": {
"query": "検索",
}
}
},
"ranking": {
"name": "clous"
}
}
一時的にランキングコードを直接入力して検索
{
"search": {
"body_sgmt": {
"main": {
"query": "検索",
}
}
},
"ranking": {
"code": "overridable quality = 0.5; _relevance = 0.3 * qds + 0.7 * quality;",
"override_value": {
"quality": 1.0
}
}
}
result_processing
検索結果の後処理を指定するパラメータです。 [section_name]、[result_processing_method]を指定して後処理を実行します。
Format
{
"result_processing": {
"[section_name]": {
"[result_processing_method]": (string|bool)
}
}
}
- [section_name]:セクション名を指定します。
- [result_processing_method]:後処理方法を指定します。
- remove_duplicate:パッセージの重複排除を実行します。
Example
{
"search": {
"body_sgmt": {
"main": {
"query": "検索",
}
}
},
"result_processing": {
"BODY": {
"remove_duplicate": true
}
}
}
setting
検索の際にその他の環境を設定できます。
Format
{
"setting": {
"transfer_timeout": (string|int),
"search_timeout": (string|int),
"ranking_value": (string|bool),
"use_df": (string|bool),
"reuse_term_extractor": (string|bool),
"log_level": (string|list),
}
}
- transfer_timeout:transfer_timeoutを指定します。
- search_timeout:search_timeoutを指定します。
- ranking_value:結果にランキング変数値の表示有無を指定します。
- use_df:idf値の使用有無を指定します。
- reuse_term_extractor:term_extractorオプションで作成したターム分析機器をサーバに保存します。
- true:term_extractorオプションを与えてruntimeに作成したターム分析機器を、次のリクエストにも使用できるようにサーバに保存します。 (合計50個まで保存できます)
- false:term_extractorオプションを与え、runtimeに作成したターム分析機器を一度使ってから捨てます。 ディフォルト設定です。
- そのオプションは検索結果に影響を与えず、性能に影響を与えます。term_extractorオプションを使用して検索クエリを作成する予定なら、実際のトラフィックを受け取る前にそのオプションを必ずオンにしてください。 ただし、テストの際にはターム分析機器の最大数字である50個を超えることがあるので、オフにしてテストを行うことをお勧めします。
Example
{
"setting": {
"transfer_timeout": 30,
"search_timeout": 30,
"ranking_value": true,
"use_df": true,
"reuse_term_extractor": true
}
}
[ Uri Search ]
- HTTP GET methodで検索をリクエスト
- Request Body formatをそのまま使用できるように設計しました。
- query string parameterにjsonPath形式で入力します。
start / display
- 検索結果を表示する範囲を選択します。
Format
?start=(string)
?display=(string)
Example
?start=1&display=10
result_format
- 検索結果のフォーマットを指定します。 基本値はjsonフォーマットです。
Format
?result_format=(string)
Example
?result_format=json
search
- 検索のためのパラメータです。
- 必須パラメータです。
Format
?search.[index_name].[query_method].query=(string)
?search.[index_name].[query_method].type=(string)
?search.[index_name].[query_method].option=(string)
?search.[index_name].[query_method].ratio=(string)
?search.[index_name].[query_method].term_extractor=(string)
Example
?search.body_sgmt.main.query=検索&search.body_sgmt.main.type=nterm&search.body_sgmt.main.option=and
sort
- 検索結果のソート基準のためのパラメータです。 [sort_target]、[sort_option]を指定して検索結果のソートを実行します。
Format
?sort.[sort_target]=[sort_option]
Example
?sort.relevance=desc
scope
- 制限検索のためのパラメータです。 [scope_target]、[scope_method]を指定して制限検索を実行します。
Format
?scope.[scope_target].[scope_method]=(string)
Example
?scope.dp_grade.exist=1
?scope.dp_pubdate.range=180403,180410
?scope.dp_price.gte=777
key_scope
- key制限検索のためのパラメータです。 [scope_method]を指定して制限検索を実行します。
Format
?key_scope.[key_scope_method]=(string)
Example
?key_scope.exist=gdid_000000001
?key_scope.nexist=gdid_00000010
user_scope
- key制限検索のためのパラメータです。 [scope_method]を指定して制限検索を実行します。
Format
?user_scope=(string)
Example
?user_scope=(dp_price > 400)
?user_scope=(dp_price >= 400) and (dp_price < 1000)
?user_scope=(dp_grade == 1) and (dp_grade == 2)
highlighting
- 検索クエリに対する構文強調を設定するためのパラメータです。
Format
?highlighting.enable=(string)
?highlighting.pre_tag=(string)
?highlighting.post_tag=(string)
?highlighting.[highlighting_option]=(string)
Example
?highlighting.enable=true
?highlighting.pre_tag=<b>&highlighting.post_tag=</b>
?highlighting.bold_sub_digit=true
display_section
- 検索結果を読み取るセクションを指定するパラメータです。 そのパラメータを指定しないと、全体セクションの結果を読み取ります。 セクションを指定すると、選択したセクションの結果のみ読み取ります。
- セクションの区切り文字は" , "です。
Format
?display_section=(string)
Example
?display_section=BODY:TITLE
passage
- 検索結果を読み取る方法と、パッセージの抽出オプションを指定するパラメータです。
Format
?passage.[section_name].passage_type=(string)
?passage.[section_name].passage_option=(string)
?passage.[section_name].max_length=(string)
Example
?passage.BODY.passage_type=classic
?passage.BODY.passage_option=mspcnt=1;rmtag=on;
?passage.BODY.max_length=400
aggregate
- 要約検索のためのパラメータです。
Format
?aggregate.[docprop_name].max=(string)
?aggregate.[docprop_name].min=(string)
?aggregate.[docprop_name].one=(string)
?aggregate.[docprop_name].sum=(string)
Example
?aggregate.dp_like_cnt.max=dp_like_cnt,dp_dislike_cnt
?aggregate.dp_like_cnt.min=dp_like_cnt,dp_type
?aggregate.dp_like_cnt.sum=_1
result_processing
- 検索結果の後処理を指定するパラメータです。 [section_name]、[result_processing_method]を指定して後処理を実行します。
Format
?result_processing.[section_name].[result_processing_method]=(string)
Example
?result_processing.TITLE.remove_duplicate=true
setting
- 検索の際にその他の環境を設定できます。
Format
?setting.transfer_timeout=(string)
?setting.search_timeout=(string)
?setting.use_df=(string)
?setting.reuse_term_extractor=(string)
Example
?setting.transfer_timeout=30
?setting.search_timeout=30
?setting.use_df=true
?setting.reuse_term_extractor=true