2016-05-10 2 views
1
{ 
    "title" : "That Uselessly Amazing Title", 
    "author" : "Someone you have never heard of", 
    "url" : "http://www.theuselessweb.com", 
    "summary" : "a collection of useless websites", 
    "tag" : ["useless","maybe useful"] 
} 

Скажем, у меня есть схема, которая выглядит так, как показано выше. Пользователь просит приложение показать что-то «бесполезное».ElasticSearch просмотреть несколько полей в виде нечеткого запроса

Как написать запрос, который будет просматривать заголовок, резюме и теги для слова «бесполезно» как нечеткий поиск?

ответ

1

Из документов Fuzzy match Query

GET /my_index/my_type/_search 
{ 
    "query": { 
    "multi_match": { 
     "fields": [ "summary", "title", "tag" ], 
     "query":  "useless", 
     "fuzziness": "AUTO" 
    } 
    } 
} 

Этот запрос работает, потому что он использует multi_match запрос

нечеткость работает только с основными match и multi_match запросов. Он не работает с фразовым соответствием, общие термины, или cross_fields совпадений.

В противном случае вам придется combine несколько fuzzy запросов внутри bool Query

+0

ОК, получил его на работу. Когда я пытаюсь «использовать» вместо «бесполезного», я не получаю никаких результатов. Почему это? Есть ли способ разрешить это? частичные строки? –

+0

Это зависит от анализаторов, фильтров токенов и т. Д., Которые вы используете для индексации объектов, а затем для поиска. Предположим, вы используете стандартный анализатор (английский), ваш заголовок будет сначала обозначен в токенах «Тот», «Бесполезно», «Удивительный» и «Титульный», тогда каждый токен будет анализироваться независимо. Для токена «Бесполезно» я считаю, что стандартный английский анализатор хранит «бесполезный» (строчный). Поэтому, когда вы ищете «использовать», вы не найдете никаких результатов. Попробуйте сыграть с другими анализаторами, возможно, вы хотите добавить свои собственные фильтры токенов. Я лично предпочитаю использовать те, которые ElasticSearch.GL! –

+0

Думаю, вам понравится токенизатор Edge NGram, смешанный со стандартным токенизатором. Помните, что для фильтра токенов имеет значение –

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