2013-02-14 7 views
3

Я пытаюсь настроить простой поиск, который возвратит мне простые результаты с пользовательским заказом, заказ, который я верну, отлично основан на пользовательской оценке.Elasticsearch query too many results

Проблема заключается в том, что для этого запроса

"query": { 
    "query_string": { 
     "query": query_term, 
     "fields": ["name_auto"], 
    } 
} 

Примечание: name_auto является пограничным N поля грамм на резинках

Я всегда получаю результирующий набор также, если запрос не имеет никакого смысла ,

Пример:

У меня есть индекс elastcisearch заполняется с именем всех андроид приложений. Если я искать лица я получить обратно все результаты, связанные с ним, заказанными по количеству комментариев по игровому магазину, menans [facebook, facebook мессенджеры, ...]

Проблема заключается в том, что, когда я запросить что-то вроде facesomeuselesschars Я по-прежнему получаю те же результаты, что и раньше, но, конечно, нет ничего, что соответствовало бы «someuselesschars».

Может кто-нибудь помочь о

+0

Возможно, ваш размер минимального грамма был достаточно большим, чтобы соответствовать началу вашего запроса, и ваш запрос также обрабатывался анализатором ngram? – LeeGee

ответ

2

ElasticSearch всегда будет возвращать результаты, соответствующие вашему запросу, даже если оценка этих результатов беден. Ваш запрос для «facesomeuselesschars» будет соответствовать всем, что имеет «лицо» в нем из-за ваших ngrams (например, первые четыре символа вашего запроса будут соответствовать нескольким токенам в вашем индексе).

Остальные символы в вашем запросе будут просто уменьшать счет возвращаемого соответствия, но не препятствовать его возврату.

Если вы хотите установить минимальный балл, который должен достичь результат, вы можете использовать параметр min_score.