Совпадение в текстовом поле с фильтром графа токенов и токенизатором ключевых слов - почему важен порядок терминов запроса? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть поле text, заполненное фильтром word_delimiter, использующее токенизатор keyword, для создания дополнительных токенов, и я хотел бы найти их (операция match) независимо от их положения в строке запроса. Например,

  1. работает - документ найден:
GET test-position/_search
{
  "query": {
    "match": {
      "title.keywords": {
        "query": "yuio zxcv",
        "operator": "or"
      }}}}
не работает - документ не найден, я не понимаю, почему? Анализатор выдает одинаковые токены для строки запроса.
GET test-position/_search
{
  "query": {
    "match": {
      "title.keywords": {
        "query": "zxcv yuio",
        "operator": "or"
      }}}}
  • Настройки индекса
PUT test-position
{
  "settings": {
    "number_of_shards": "1",
    "number_of_replicas": "0",
    "analysis": {
      "filter": {
        "word_delimiter_filter": {
          "type": "word_delimiter_graph",
          "catenate_words": "true",
          "catenate_numbers": "true",
          "catenate_all": "true",
          "preserve_original": "true",
          "generate_number_parts": "true"
        }},
      "analyzer": {
        "wordpart_analyzer": {
          "filter": [
            "word_delimiter_filter"
          ],
          "tokenizer": "keyword"
        }}}},
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "standard", 
        "fields": {
          "keywords": {
            "type": "text",
            "analyzer": "wordpart_analyzer"
          }}}}}}
  • Тест документ
PUT test-position/_bulk
{"index":{}}
{"title":"asdf qwer yuio zxcv"}

1 Ответ

0 голосов
/ 27 марта 2020

Иногда это действительно помогает полностью сформулировать ваш вопрос:)

Я получил ответ сейчас: параметр "magi c" равен index_options . Добавление

"index_options": "freqs"

к отображению полей решило проблему, поскольку поведение по умолчанию - сохранение позиций терминов (или порядка) вместе с количеством документов и частотами терминов при индексации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...