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

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

  1. работает - документ найден:
GET test-position/_search
{
  "query": {
    "match": {
      "title.keywords": {
        "query": "yuio zxcv",
        "operator": "or"
      }}}}
  1. не работает - документ не найден, я не понимаю, почему? Анализатор создает те же токены для строки запроса.
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 ответ


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

Теперь я получил ответ: «магический» параметр - index_options . Добавление

"index_options": "freqs"

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


Есть идеи?

10000