Предложение поиска Elasticsearch по полю массива с частичным завершением ребра ngram

Я пытаюсь создать подсказчик на основе массивов строк в моих документах, он похож на это , но с некоторыми отличиями: completion suggester из Elasticsearch не совсем то, что я хочу (с точки зрения фильтрации и сопоставления префиксов), так как мне нужна граничная ngram, которая будет работать с любым словом предложения, ударение- бесчувственный. Поясню на примере.

Предположим, у меня есть следующие проиндексированные документы. Я хочу предложить «теги» на основе запроса q (мне не важен сам документ, только те tag, которые соответствуют моему запросу)

[
  { "tags": [ "société générale", "consulting" ] },
  { "tags": [ "big data", "big", "data"] },
  { "tags": [ "data" ] },
  { "tags": [ "data engineering" ] }
  { "tags": [ "consulting and management of IT" ] }
]

Я хочу сопоставить префикс с толерантностью к акценту, и следующие запросы/ответы подчеркивают то, что мне нужно

  • (1) q = "societe" или q = "societe generale" должны возвращать [ "société générale" ] --> без учета ударения
  • (2) q = "big data" должно возвращать [ "big data" ] --> оба префикса "big" и "data" должны быть в строке
  • (3) q = "data" должен возвращать [ "big data", "data", "data engineering" ], --> в любом месте предложения (но в качестве префикса)
  • (4) q = "ata" ничего не должно возвращать (не префикс)
  • (5) q = "IT consulting" должно возвращать [ "consulting and management of IT" ] --> оба префикса q должны совпадать независимо от порядка

Если я использую обычный completion mapper+suggester,

# assuming a mapping of "tags", of type 'completion' is configured in my ES
{
  suggest: {
    text: "big data",
    tags: {
      completion: {
        field: "tags",
      },
    },

почти ни один из этих случаев не работает, кроме (2), (4) и 1/3 результатов из (3)

Могу ли я создать пользовательское средство подсказки или собственный поисковый запрос, который удовлетворял бы моим требованиям и приведенным выше примерам?


person Cyril Duchon-Doris    schedule 18.11.2019    source источник
comment
вы получили решение этого?   -  person Sachin Singh    schedule 15.03.2020
comment
Нет. Я слышал, что в elasticsearch 7.3 могут быть некоторые функции, которые могли бы помочь в этом, но, к сожалению, они до сих пор не выпустили эту версию на AWS.   -  person Cyril Duchon-Doris    schedule 15.03.2020
comment
вам следует проверить Opensearch - Documentation. AWS собирается перейти на Opensearch в ближайшем будущем по причинам, связанным с лицензией aws.amazon.com/de/elasticsearch-service/the-elk-stack/ opensearch.org/docs/opensearch/ux/#autocomplete-queries, возможно, будет выпущен релиз с функциями, которые вам нужны ????   -  person BernhardS    schedule 27.07.2021