Tire — запрос с условным / пользовательским _score

#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