Рассматривать несколько предложений в запросе Elasticsearch как отдельные - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть запрос Elasticsearch с предложением «Следует» следующего формата.Намерение состоит в том, чтобы искать несколько строк запроса с помощью одного запроса:

[ 
    { match: { "name": { query: "Candied Apples" } } },
    { match: { "name": { query: "Canned Pears" } } } 
]

Согласно https://www.elastic.co/guide/en/elasticsearch/guide/current/multi-query-strings.html ES объединяет эти пункты, поэтому документ под названием «Консервированные яблоки и груши» получаетболее высокий балл, чем у «Консервированных груш», хотя «Консервированные груши» точно соответствует одной из строк запроса.Есть ли лучший способ структурировать мой запрос так, чтобы каждое предложение оценивалось отдельно?

Чтобы было ясно, я бы хотел, чтобы в качестве примера поиска был возвращен документ с именем "Консервированные яблоки и груши".выше, но он должен иметь более низкую оценку, чем любые документы, названные «Candied Apple» или «Консервированные груши», потому что он точно не соответствует ни одному из условий поиска.Это означает, что значениеimum_should_match 100% не подходит.

Полное раскрытие - я новичок в ES!

1 Ответ

0 голосов
/ 14 ноября 2018

Один из подходов, который, похоже, позволяет получить структуру оценки, которую я ищу, состоит в том, чтобы объединить «match_phrase» и «match» для каждого поискового запроса в один запрос, например:

[ 
    {match_phrase: { 'name': { query: 'Candied Apples' } } },
    {match_phrase: { 'name': { query: 'Canned Pears' } } },
    {match: { 'name': { query: 'Candied Apples' } } },
    {match: { 'name': { query: 'Canned Pears' } } } 
]

Это означает, чтовозвращаются все полные и частичные совпадения, но все успешные совпадения фраз будут иметь более высокий балл, чем результаты предложений 'match'.

Обратите внимание, что для того, чтобы это работало, должны быть указаны предложения 'match_phrase'первый.

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