Подсказка фразы Elasticsearch не возвращает ожидаемых результатов - PullRequest
0 голосов
/ 28 февраля 2020

Я пытался реализовать средство подсказки, которое запускается рядом с запросом, чтобы предлагать варианты, если пользователь неправильно написал запрос. Следующие сопоставления и подсказки в основном работают для меня, но есть несколько запросов, которые не возвращают подсказки, которые, по моему мнению, должны. Например, oven mit должно быть исправлено на oven mitt, так как у меня есть документ в индексе со следующим docvalue_fields для поля, которое я использую для генерации предлагаемых кандидатов:

 "fields" : {
          "sayt.shingle" : [
            "holder",
            "mitt",
            "oven",
            "oven mitt",
            "pot",
            "pot holder",
          ]
        }

Одна возможная проблема Я думал о том, что я использую copy_to для добавления терминов в поле sayt из 3 источников, но он работает для других запросов (pot holde исправляет до pot holder).

Отображения :

{
  "settings": {
    "analysis": {
      "analyzer": {
        "shingle_3": {
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "shingle_3"
          ]
        }
      },
      "filter": {
        "shingle_3": {
          "type": "shingle",
          "max_shingle_size": 3,
          "min_shingle_size": 2,
          "output_unigrams": "true",
          "filler_token": ""
        }
      }
    }
  },
  "properties": {
    "sayt": {
      "type": "text",
      "index": true,
      "store": true,
      "fields": {
        "shingle": {
          "fielddata": true,
          "analyzer": "shingle_3",
          "type": "text"
        }
      }
    }
  }
}

Запрос:

{
  "suggest": {
    "didYouMean": {
      "text": "oven mit",
      "phrase": {
        "direct_generator": [
          {
            "field": "sayt.shingle",
            "max_edits": 1,
            "min_word_length": 1,
            "suggest_mode": "always"
          }
        ],
        "field": "sayt.shingle",
        "size": 5
      }
    }
  }
}

А вот вывод:

"suggest" : {
    "didYouMean" : [
      {
        "text" : "oven mit",
        "offset" : 0,
        "length" : 8,
        "options" : [ ]
      }
    ]
  }
...