2015-12-16 4 views
0

В elasticsearch есть способ увеличить количество документов, где слова запроса находятся близко друг к другу в документе? Речь идет не только о словах, которые вместе, поскольку это можно решить, используя черепицу, но о словах, которые находятся в непосредственной близости, где может быть другое несущественное слово между ними.elasticsearch word proximity

Пример:

документ 1:

close words in documents detection 

документ 2:

close words in detection documents 

запрос:

close documents 

Так что я хотел бы получить высокий балл первый документ и низкий r для второго.

Если эти слова были сразу рядом друг с другом, я бы использовал черепицу и два или три слова. Однако этот подход не учитывает слова, близкие друг к другу.

ответ

1

Следующий запрос представляет собой измененную форму, указанную в документе docos elastic, и должен соответствовать требованиям. Он использует функцию близости в ElasticSearch, известную как «фраза соответствия».

POST /my_index/my_type/_search 
{ 
    "query": { 
     "match_phrase": { 
     "text": { 
      "query": "close documents", 
      "slop": 50 
     } 
     } 
    } 
} 

Параметр отстойные выше контроля, насколько близко условия должны быть для того, чтобы документ, который будет рассмотрен матч на всех. Технически это число ходов, которые нужно сделать, чтобы он становился более сложным с большим количеством слов в запросе, но с двумя терминами он упрощал дистанцию. Помимо этого, они должны оцениваться выше с более близкой близостью, чего мы хотим.

+0

Остерегайтесь, однако, что при использовании слишком высокого отскока порядок слов может измениться (то есть «документы, близкие мне» совпадут), что повлияет на результат. – Val

Смежные вопросы