Cloud Search API参照書へショートカット >>
Cloud Search説明書へショートカット >>

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)
      }]
    }
  },

  "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"
}

検索のためのパラメータです。 [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, simbst typeの際に使用)
  • term_extractor: 検索質疑タームの抽出方法を指定します。基本値は指定された索引の索引オプションです。現在は韓国語のみサポートします。

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
            }
          }
        }
      }
      
  • 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"
            }
          }
        }
      }
      

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: 指定したビートの値と文書属性を演算して、True、Falseの場合の文書に検索結果を制限します。
    • bitmask: 指定したビートの値と文書属性をbitmask 演算してTrueの場合の文書に検索結果を制限します。

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

  • 検索のためのパラメータです。
  • 必須パラメータです。

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

に対する検索結果は~件です。 ""

    に対する検索結果がありません。 ""

    処理中...