Elasticsearch не выделяет все совпадения - PullRequest
0 голосов
/ 05 мая 2020

Мне трудно понять, почему следующий объект запроса не заставляет ES выделять все слова в столбце _source.

{
    _source: [
        'baseline',
        'cdrp',
        'date',
        'description',
        'dev_status',
        'element',
        'event',
        'id'
    ],
    track_total_hits: true,
    query: {
        bool: {
            filter: [],
            should: [
                {
                    multi_match:{
                        query: "imposed calcs",
                        fields: ["cdrp","description","narrative.*","title","cop"]
                    }
                }
            ]
        } 
    },
    highlight: { fields: { '*': {} } },
    sort: [],
    from: 0,
    size: 50
}

Выполняя этот запрос, я получаю следующий объект выделения. Обратите внимание, что выделено только слово «вычисляет». Как мне создать объект выделения, чтобы сделать ES выделение «наложенным»?

"highlight": {
    "description": [
        "GAP Sub-window conn ONe-e: heve PP-BE Defined ASST requirem RV confsng, des MAN Imposed <em>calcs</em> mising"
    ]
} 

Я использую следующее сопоставление «description»:

"description": {
    "type": "text",
    "analyzer": "search_synonyms"
},



"analysis": {
    "analyzer": {
        "search_synonyms": {
            "tokenizer": "whitespace",
            "filter": [
                "graph_synonyms"
            ],
            "normalizer": [
                "normalizer_1"
            ]
        }
    },
    "filter": {
        "graph_synonyms": {
            "type": "synonym_graph",
            "synonyms_path": "synonym.txt"
        }
    },
    "normalizer": {
        "normalizer_1": {
            "type": "custom",
            "char_filter": [],
            "filter": ["lowercase", "asciifolding"]
        }
    }
}

1 Ответ

0 голосов
/ 05 мая 2020

РЕДАКТИРОВАТЬ

Я думаю, ваш фильтр graph_synonyms отменяет фильтры нормализатора. Попробуйте следующее:

PUT highlighter
{
  "settings": {
    "analysis": {
      "analyzer": {
        "search_synonyms": {
          "tokenizer": "whitespace",
          "filter": [
            "graph_synonyms",
            "lowercase",
            "asciifolding"
          ]
        }
      },
      "filter": {
        "graph_synonyms": {
          "type": "synonym_graph",
          "synonyms_path": "synonym.txt"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "description": {
        "type": "text",
        "analyzer": "search_synonyms"
      }
    }
  }
}

ORIGINAL

Я подозреваю, что в вашем сопоставлении есть какая-то настройка, предотвращающая совпадение, поскольку я не мог воспроизвести это с сопоставлением с полу-умолчанию:

PUT highlighter
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "standard",
          "filter": [
            "lowercase"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "description": {
        "type": "text",
        "fields": {
          "lowercase": {
            "type": "text",
            "analyzer": "my_analyzer"
          }
        }
      }
    }
  }
}

POST highlighter/_doc
{
  "description": "GAP Sub-window conn ONe-e: heve PP-BE Defined ASST requirem RV confsng, des MAN Imposed calcs mising"
}

Подключение вашего запроса

GET highlighter/_search
{
  "_source": [
    "baseline",
    "cdrp",
    "date",
    "description",
    "dev_status",
    "element",
    "event",
    "id"
  ],
  "track_total_hits": true,
  "query": {
    "bool": {
      "filter": [],
      "should": [
        {
          "multi_match": {
            "query": "imposed calcs",
            "fields": [
              "cdrp",
              "description.lowercase",
              "narrative.*",
              "title",
              "cop"
            ]
          }
        }
      ]
    }
  },
  "highlight": {
    "fields": {
      "*": {}
    }
  },
  "sort": [],
  "from": 0,
  "size": 50
}

с получением

[
  {
    "_index":"highlighter",
    "_type":"_doc",
    "_id":"Bf5F5HEBW-D5QnrWwTyh",
    "_score":0.5753642,
    "_source":{
      "description":"GAP Sub-window conn ONe-e: heve PP-BE Defined ASST requirem RV confsng, des MAN Imposed calcs mising"
    },
    "highlight":{
      "description":[
        "GAP Sub-window conn ONe-e: heve PP-BE Defined ASST requirem RV confsng, des MAN <em>Imposed</em> <em>calcs</em> mising"
      ]
    }
  }
]
...