Как предотвратить частичное совпадение запросов с помощью searchkick и word_start
Я уверен, что есть способ сделать это, но я должен что-то упустить. Вот моя основная настройка:
class Tag < ActiveRecord::Base
searchkick word_start: [:name]
end
Когда я ищу так:
Tag.search('advertising', fields:[{name: :word_start}])
Все хорошо. Однако, когда запрос включает в себя несколько слов, как:
Tag.search('click to talk', fields:[{name: :word_start}])
Я получаю целую кучу нежелательных результатов: "Игрушки", "Инструменты", "Прикосновение". Предположительно, потому что токен 'to' соответствует началу этих слов. Я не могу использовать text_start
потому что я хочу, чтобы "реклама" соответствовала "мобильной рекламе". В идеале я бы хотел предотвратить частичное совпадение запроса, но разрешить частичное совпадение в индексе.
Я пробовал цитаты:
Tag.search('"click to talk"', fields:[{name: :word_start}])
Кажется, это не помогает.
1 ответ
По умолчанию :word
"реклама" должна соответствовать "мобильной рекламе". Нежелательные результаты "нажмите, чтобы поговорить" могут быть возвращены из-за misspellings
попробуйте установить это в false
и посмотреть, если это отключит шум.
Tag.search("click to talk", fields: [:name], misspellings: false)