Я пытаюсь выполнить конкретный c поиск в своем приложении, и у меня возникли некоторые проблемы.
Я хочу, чтобы первые результаты в моем поиске содержали фразу, которая была искал сначала , а не просто содержал его.
Например, если я ищу детали в своем приложении, я получаю следующие результаты:
Add-On Windshield Wiper Kit
Turn Signal / Headlight / Windshield Wiper/Washer Combination Lever Set
Turn Signal / Headlight / Windshield Wiper/Washer Combination Switch and Lever Set
Windshield Wiper / Washer Circuit Breaker
Windshield Wiper / Washer Dash Indicator Light
Windshield Wiper Arm
В то время как я пытаюсь достичь чего-то вроде этого:
Windshield Wiper Arm
Windshield Wiper / Washer Circuit Breaker
Windshield Wiper / Washer Dash Indicator Light
Add-On Windshield Wiper Kit
Turn Signal / Headlight / Windshield Wiper/Washer Combination Lever Set
Turn Signal / Headlight / Windshield Wiper/Washer Combination Switch and Lever Set
Обратите внимание на то, как рычаг стеклоочистителя ветрового стекла является первым результатом, поскольку он содержит параметры поиска (который просто "стеклоочиститель ветрового стекла") и последующее слово, которое начинается с буквы A.
В любом случае, вот моя модель :
class Pcdb::Part < CatalogsRecord
include PgSearch
self.table_name = "parts"
belongs_to :parts_description
pg_search_scope :search_for_parts, against: :part_terminology_name, using: { tsearch: { dictionary: "simple", normalization: 2 } }
end
И соответствующая часть моего контроллера:
Pcdb::Part.where('lower(parts.part_terminology_name) like ?', "%#{search}%").reorder("parts.part_terminology_name ASC")
В данном конкретном случае переменная search
равна Windshield Wiper
.
Заранее спасибо!