#ruby-on-rails #elasticsearch #tire
#ruby-on-rails #elasticsearch #tire
Вопрос:
Я обычно ищу с помощью tire с фильтрами, все в порядке. Но я хочу быть точным в поиске, для примера, если я буду искать «dfssdljf», он не вернет мне никаких данных, но в настоящее время он возвращает мне совершенно нерелевантные данные.
Согласно атрибутам шины, я могу отклонить результат с _score <0,5, но только во время итерации после поиска. Но после того, как я попробовал это — это плохая идея, потому что у меня есть разбивка на страницы, которая может быть испорчена во время итерации.
Вопрос в том, могу ли я что-то сделать в строке «ГДЕ _score> 0,5» во время поиска шины?
Комментарии:
1. Откуда вы знаете, что оценка 0,5 достаточно низкая или достаточно высокая?
2. @alex я видел, что все запросы под ним совершенно не имеют значения
3. вы должны выяснить, почему они не имеют значения, почему, если вы запрашиваете
dfssdljf
, вы возвращаете неправильные данные, возможно, это из-за пользовательских анализаторов и т. Д.4. у меня есть наш пользовательский анализатор с «tokenizer» => ‘standart’ и «filters» => [«standart», «asciifolding», «lowercase»], но, похоже, они не должны путать поиск таким образом, заранее спасибо, Алекс!
Ответ №1:
Смотри http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-min-score.html из min_score
и в поиске шин вы могли бы использовать
Tire::Search::Search.new index_name do
query your_query
min_score 0.5
end