Я пытаюсь реализовать полнотекстовый поиск по двум столбцам, которые я создал для вида: VendorName, ProductName. У меня есть полный текстовый индекс и т. Д., Но фактический запрос - это то, что вызывает некоторые проблемы для меня.Как реализовать полнотекстовый поиск по нескольким столбцам в sql-сервере?
Я хочу, чтобы пользователи имели возможность использовать некоторые стандартные соглашения о поиске, AND AND NOT и группировать термины по(), которые являются точными, но я хочу применить поиск по обоим столбцам, например, если бы я запускал запроса, такие как:
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")
затем он работает, но влезает другие поисковые запросы (например, в поисках только яблоко) и от пользователя написания запроса не имеет особого смысла, так как то, что они вероятно, будут писать AND, но для этого требуется OR.
Что я хочу, так это возврат, если между двумя критериями поиска был действительный, поэтому он соответствовал бы всем производителям, названным apple, с именем продукта itunes, например.
Должен ли я создать отдельное поле в представлении, которое объединяет поля «Поставщик» и «Продукт» и выполняет первый запрос в этом новом поле или что-то у меня отсутствует?
Помимо этого кто-нибудь знает о существующем методе проверки запросов?
Это кажется невозможным с представлением SQL Server - я ошибаюсь? (не может создать некластеризованный индекс для представления, которое вычисляло столбцы) –
@RoyTinker: что вы подразумеваете под «представлением, которое вычисляло столбцы»? – Quassnoi
Ничего, мой комментарий неверен (возможно _is_). Под «представлением, которое вычисляло столбцы» я имел в виду то, что вы сказали выше, предполагая, что вы хотели создать представление. –