Как правильно настроить выделение ElasticSearch 7.6.2 с помощью FVH? - PullRequest
1 голос
/ 05 апреля 2020

Как правильно настроить подсветку поисковых слов в больших документах с помощью быстрого векторного подсветчика?

Я пробовал документацию и следующие настройки для индекса (как буквально Python, комментировал альтернативные настройки, которые я также пробовал, с магазином и без):

    {
        "settings": {
            "number_of_shards": 1,
            "number_of_replicas": 0
        },
        "mappings": {
            "members": {
                "dynamic": "strict",
                "properties": {
                    "url": {
                        "type": "text",
                        "term_vector": "with_positions_offsets",
                        #"index_options": "offsets",
                        "store": True
                    },
                    "title": {
                        "type": "text",
                        #"index_options": "offsets",
                        "term_vector": "with_positions_offsets",
                        "store": True
                    },
                    "content": {
                        "type": "text",
                        #"index_options": "offsets",
                        "term_vector": "with_positions_offsets",
                        "store": True
                    }
                }
            }
        }
    }

Поиск выполнялся по следующему запросу (опять же, комментированные места пробовали одно за другим, в некоторых комбинациях):

   {
        "query": {
            "multi_match": {
                "query": term,
                "fields": ["url", "title", "content"]
            },
        },
        "_source": {
            #"includes": ["url", "title", "_id"],
            # "excludes": ["content"]
        },
        "highlight": {
            "number_of_fragments": 40,
            "fragment_size": 80,
            "fields": {
                "content": {"matched_fields": ["content"]},
                #"content": {"type": "fvh", "matched_fields": ["content"]},
                #"title": {"type": "fvh", "matched_fields": ["title"]},
            }
        }
    }

Проблема в том, что когда FVH не используется, ElasticSearch жалуется, что поле «контент» слишком велико. (И я не хочу увеличивать разрешенный размер). Когда я добавляю тип «fvh», ES жалуется, что необходимы векторы терминов: даже если я проверил, есть ли они там, запрашивая информацию о документе (смещения, запуска и т. Д. c):

поле [content] должно быть проиндексировано термином vector с смещением позиции для использования с быстрым векторным маркером

Похоже:

  1. Когда я опускаю "type": "fvh", оно не используется, хотя в документации упоминается, что это значение по умолчанию, когда "term_vector": "with_positions_offsets".
  2. Я могу видеть векторы терминов в индексе, но ES не находит их. (косвенно, при индексировании с помощью векторов терминов индекс почти в два раза больше)
  3. Все испытания включали удаление старого индекса и его добавление снова.

Это также настолько коварно, что оно не удается только при обнаружении большого документа. Основные моменты есть для запросов, где документы маленькие.

Как правильно настроить основные моменты в бесплатной версии ElasticSearch 7 (я пробовал в Ubuntu с бинарным deb от поставщика)?

...