Я пытаюсь реализовать полнотекстовый поиск по двум столбцам, для которых я создал представление: VendorName, ProductName. У меня работает полнотекстовый индекс и т. Д., Но фактический запрос вызывает у меня некоторые проблемы.
Я хочу, чтобы пользователи могли использовать некоторые стандартные соглашения о поиске, ИЛИ ИЛИ НЕТ, и группировать термины по (), что хорошо, но я хочу применить поиск по обоим столбцам, например, если бы мне нужно было выполнить запрос такие как:
SELECT * FROM vw_Search
WHERE CONTAINS((VendorName, ProductName), "Apple AND iTunes")
Кажется, что он применяет запрос к каждому столбцу индивидуально, то есть проверяет имя поставщика для обоих терминов, а затем проверяет название продукта для обоих терминов, которые не будут совпадать, если поставщик не был назван «Apple iTunes».
Если я изменю запрос на:
SELECT * FROM vw_Search
WHERE CONTAINS(VendorName, "Apple OR iTunes")
AND CONTAINS(ProductName, "Apple OR iTunes")
тогда он работает, но нарушает другие поисковые запросы (например, поиск только apple), и для пользователя, пишущего запрос, это не имеет особого смысла, поскольку то, что они могут написать, - это И, но для работы требуется ИЛИ.
То, что я хочу, это чтобы он возвращался, если между этими двумя терминами был действительный поисковый термин, чтобы он соответствовал всем поставщикам с именем apple, например, названием продукта itunes.
Должен ли я создать отдельное поле в представлении, которое объединяет поля Vendor и Product и выполняет первый запрос для этого нового поля, или я что-то упускаю?
Помимо этого кто-нибудь знает о существующем методе проверки запросов?