ファジークエリ

検索語に類似した用語を含む文書を返します。これは、レーヴェンシュタイン編集距離によって測定されます。

編集距離とは、ある用語を別の用語に変えるために必要な1文字の変更の数です。これらの変更には以下が含まれます:

  • 文字の変更 (box → fox)
  • 文字の削除 (black → lack)
  • 文字の挿入 (sic → sick)
  • 隣接する2文字の転置 (act → cat)

類似の用語を見つけるために、fuzzyクエリは指定された編集距離内での検索語のすべての可能なバリエーションまたは拡張のセットを作成します。クエリはその後、各拡張の正確な一致を返します。

例のリクエスト

シンプルな例

Python

  1. resp = client.search(
  2. query={
  3. "fuzzy": {
  4. "user.id": {
  5. "value": "ki"
  6. }
  7. }
  8. },
  9. )
  10. print(resp)

Ruby

  1. response = client.search(
  2. body: {
  3. query: {
  4. fuzzy: {
  5. 'user.id' => {
  6. value: 'ki'
  7. }
  8. }
  9. }
  10. }
  11. )
  12. puts response

Js

  1. const response = await client.search({
  2. query: {
  3. fuzzy: {
  4. "user.id": {
  5. value: "ki",
  6. },
  7. },
  8. },
  9. });
  10. console.log(response);

コンソール

  1. GET /_search
  2. {
  3. "query": {
  4. "fuzzy": {
  5. "user.id": {
  6. "value": "ki"
  7. }
  8. }
  9. }
  10. }

高度なパラメータを使用した例

Python

  1. resp = client.search(
  2. query={
  3. "fuzzy": {
  4. "user.id": {
  5. "value": "ki",
  6. "fuzziness": "AUTO",
  7. "max_expansions": 50,
  8. "prefix_length": 0,
  9. "transpositions": True,
  10. "rewrite": "constant_score_blended"
  11. }
  12. }
  13. },
  14. )
  15. print(resp)

Ruby

  1. response = client.search(
  2. body: {
  3. query: {
  4. fuzzy: {
  5. 'user.id' => {
  6. value: 'ki',
  7. fuzziness: 'AUTO',
  8. max_expansions: 50,
  9. prefix_length: 0,
  10. transpositions: true,
  11. rewrite: 'constant_score_blended'
  12. }
  13. }
  14. }
  15. }
  16. )
  17. puts response

Js

  1. const response = await client.search({
  2. query: {
  3. fuzzy: {
  4. "user.id": {
  5. value: "ki",
  6. fuzziness: "AUTO",
  7. max_expansions: 50,
  8. prefix_length: 0,
  9. transpositions: true,
  10. rewrite: "constant_score_blended",
  11. },
  12. },
  13. },
  14. });
  15. console.log(response);

コンソール

  1. GET /_search
  2. {
  3. "query": {
  4. "fuzzy": {
  5. "user.id": {
  6. "value": "ki",
  7. "fuzziness": "AUTO",
  8. "max_expansions": 50,
  9. "prefix_length": 0,
  10. "transpositions": true,
  11. "rewrite": "constant_score_blended"
  12. }
  13. }
  14. }
  15. }

ファジー用のトップレベルパラメータ

  • <field>
  • (必須、オブジェクト) 検索したいフィールド。

のパラメータ

  • value
  • (必須、文字列) 提供された<field>内で見つけたい用語。
  • fuzziness
  • (オプション、文字列) 一致のために許可される最大編集距離。 有効な値と詳細についてはFuzzinessを参照してください。
  • max_expansions
  • (オプション、整数) 作成される最大バリエーション数。 デフォルトは50です。
    max_expansionsパラメータで高い値を使用することは避けてください。特にprefix_lengthパラメータの値が0の場合は注意が必要です。max_expansionsパラメータの高い値は、調べるバリエーションの数が多いため、パフォーマンスの低下を引き起こす可能性があります。
  • prefix_length
  • (オプション、整数) 拡張を作成する際に変更されない最初の文字の数。 デフォルトは0です。
  • transpositions
  • (オプション、ブール値) 編集に隣接する2文字の転置を含めるかどうかを示します (ab → ba)。 デフォルトはtrueです。
  • rewrite
  • (オプション、文字列) クエリを再構築するために使用されるメソッド。 有効な値と詳細については、rewriteパラメータを参照してください。

ノート

search.allow_expensive_queriesがfalseに設定されている場合、ファジークエリは実行されません。