Как предотвратить частичное совпадение запросов с помощью 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)
Другие вопросы по тегам