

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Neptune フルテキスト検索パラメータ
<a name="full-text-search-parameters"></a>

Amazon Neptune は、以下のパラメータを使用して、Gremlin と SPARQL の両方でフルテキストの OpenSearch クエリを指定します。
+ **`queryType`**  –   (*必須*) OpenSearch クエリのタイプ。(クエリタイプのリストについては、「[OpenSearch ドキュメンテーション](https://www.elastic.co/guide/en/elasticsearch/reference/current/full-text-queries.html)」を参照してください。) Neptune は以下の OpenSearch クエリタイプをサポートしています。
  + [simple\$1query\$1string](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html)   –   指定されたクエリ文字列に基づいてドキュメントを返し、限定されているが耐障害性の Lucene 構文のパーサーを使用します。これがデフォルトのクエリタイプです。

    このクエリは、単純な構文を使用して、指定されたクエリ文字列を特殊な演算子に基づいて単語に分割します。クエリは、一致するドキュメントを返す前に、各用語を個別に分析します。

    構文は `query_string` クエリよりも制限されていますが、`simple_query_string` クエリでは無効な構文のエラーは返されません。代わりに、クエリ文字列の無効な部分は無視されます。
  + [match](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html)   –  `match`クエリは、ファジーマッチングのオプションを含む、フルテキスト検索を実行するための標準クエリです。
  + [prefix](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html)   –  指定されたフィールドに特定のプレフィックスを含むドキュメントを返します。
  + [fuzzy](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html)   –   Levenshtein 編集距離で測定された、検索語に類似する語を含むドキュメントを返します。

    編集距離とは、ある用語を別の用語に変換するのに必要な 1 文字の変更の数です。これらの変更には、次のものがあります。
    + キャラクターの変更 (box から fox へ)。
    + 文字を削除する (black から lack へ)。
    + 文字を挿入する (sic から sick へ)。
    + 隣接する 2 つの文字を転置する (act から cat へ)。

    類似する用語を見つけるために、fuzzy クエリは、指定された編集距離内に検索用語のすべての可能なバリエーションと拡張のセットを作成し、それらのバリアントごとに完全一致を返します。
  + [term](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html)   –  指定したフィールドの 1 つに、指定した語句と完全に一致するドキュメントを返します。

    `term` クエリを使用すると、価格、製品 ID、ユーザー名などの正確な値に基づいてドキュメントを検索できます。
**警告**  
テキストフィールドにはクエリという用語を使用しないでください。デフォルトでは、OpenSearch は分析の一部としてテキストフィールドの値を変更するため、テキストフィールド値の完全一致を見つけることが困難になります。  
テキストフィールド値を検索するには、代わりに match クエリを使用します。
  + [query\$1string](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html)   –  厳密な構文 (Lucene 構文) のパーサーを使用して、指定されたクエリ文字列に基づいてドキュメントを返します。

    このクエリは、構文を使用して、AND や NOT などの演算子に基づいて、指定されたクエリ文字列を解析して分割します。クエリは、一致するドキュメントを返す前に、分割された各テキストを個別に分析します。

    `query_string` クエリを使用して、ワイルドカード文字、複数のフィールドにわたる検索などを含む複雑な検索を作成できます。汎用性がありますが、クエリは厳密であり、クエリ文字列に無効な構文が含まれている場合はエラーを返します。
**警告**  
無効な構文に対してエラーが返されるため、検索ボックスに `query_string` クエリを使用することはお勧めしません。  
クエリ構文をサポートする必要がない場合は、`match` クエリの使用を検討してください。クエリ構文の機能が必要な場合は、`simple_query_string` クエリを使用します。これはあまり厳密ではありません。
+ **`field`**   –   検索を実行する対象の OpenSearch のフィールド。`queryType` や `simple_query_string` など、このフィールドの省略を許可する `query_string` では、これを省略できます。省略すると、検索はすべてのフィールドを対象に実行されます。Gremlin では、これは暗黙的です。

  `simple_query_string` および `query_string` など、複数のフィールドを指定できるクエリでは、複数を指定できます。
+ **`query`**   –   (*必須*) OpenSearch に対して実行するクエリ。このフィールドの内容は、QueryType によって異なる場合があります。たとえば、異なる QueryType (`Regexp` など) は異なる構文を受け入れます。Gremlin では、`query` は暗黙的です。
+ **  `maxResults`**   –返される結果の最大数。デフォルトは `index.max_result_window` OpenSearch 設定であり、それ自体のデフォルトは 10,000 です。`maxResults` パラメータには、それよりも小さい任意の数を指定できます。
**重要**  
`maxResults` を OpenSearch の `index.max_result_window` の値より大きい値に設定して、`index.max_result_window` より多くの結果を取得しようとすると、OpenSearch は `Result window is too large` エラーで失敗します。ただし、Neptune はエラーを伝播せずにこれを正常に処理します。`index.max_result_window` 結果以上のものを取得しようとしている場合は、これを考慮してください。
+ **  `minScore`**   –検索結果が返されるために必要な最小限のスコア。結果スコアリングの説明については、「[OpenSearch の関連ドキュメント](https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html)」を参照してください。
+ **`batchSize`**   –   Neptune は常にデータをバッチで取得します (デフォルトのバッチサイズは 100 です)。このパラメータを使用して、パフォーマンスを調整できます。バッチサイズは `index.max_result_window` OpenSearch 設定を超えることはできません。デフォルトは 10,000 です。
+ **`sortBy`**   –   OpenSearch が返した結果を以下のいずれかで並べ替えることができるオプションのパラメータ。
  + *ドキュメント内の特定のフィールド*   –  

    たとえば、SPARQL クエリでは、次のように指定できます。

    ```
        neptune-fts:config neptune-fts:sortBy foaf:name .
    ```

    同様の Gremlin クエリでは、次のように指定できます。

    ```
        .withSideEffect('Neptune#fts.sortBy', 'name')
    ```
  + *ドキュメント内の特定のフィールド (`long`、`double`、など)*   –  

    文字列以外のフィールドでソートする場合は、文字列フィールドと区別するために `.value` をフィールド名に追加する必要があります。

    たとえば、SPARQL クエリでは、次のように指定できます。

    ```
        neptune-fts:config neptune-fts:sortBy foaf:name.value .
    ```

    同様の Gremlin クエリでは、次のように指定できます。

    ```
        .withSideEffect('Neptune#fts.sortBy', 'name.value')
    ```
  + `score`   –   マッチスコアで並べ替えます (デフォルト)。

    `sortOrder` パラメータが存在しても `sortBy` が存在しない場合、結果は `score` によって指定された順序で `sortOrder` によって並べ替えられます。
  + `id`   –   ID (SPARQL URI、Gremlin Vertex またはエッジ ID) で並べ替えます。

    たとえば、SPARQL クエリでは、次のように指定できます。

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_id' .
    ```

    同様の Gremlin クエリでは、次のように指定できます。

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_id')
    ```
  + `label`   –  ラベルで並べ替えます。

    たとえば、SPARQL クエリでは、次のように指定できます。

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_type' .
    ```

    同様の Gremlin クエリでは、次のように指定できます。

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_type')
    ```
  + `doc_type`   –   ドキュメントタイプ (SPARQL または Gremlin) で並べ替えます。

    たとえば、SPARQL クエリでは、次のように指定できます。

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.document_type' .
    ```

    同様の Gremlin クエリでは、次のように指定できます。

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.document_type')
    ```

  デフォルトでは、OpenSearch の結果はソートされず、その順序は非決定的です。つまり、同じクエリが実行されるたびに異なる順序で項目を返す可能性があります。このため、結果セットが `max_result_window` より大きい場合、クエリが実行されるたびに、合計結果のかなり異なるサブセットが返される可能性があります。ただし、ソートすることで、異なる実行の結果をより直接的に比較することができます。

  `sortOrder` に `sortBy` パラメータが伴わない場合は、最大から最小までの降順 (`DESC`) が使用されます。
+ **`sortOrder`**   –   OpenSearch の結果を最小から最大に並べ替えるか、最大から最小 (デフォルト) に並べ替えるかを指定できるオプションのパラメータ。

****
  + `ASC`   –   昇順、最小から最大。
  + `DESC`   –   降順、最大から最小。

    このパラメータはデフォルト値で、`sortBy` パラメータが存在するものの `sortOrder` が指定されていない場合に使用されます。

  `sortBy` も `sortOrder` も存在しない場合、OpenSearch の結果はデフォルトではソートされません。