Я пытаюсь реализовать полнотекстовый поиск на двух столбцах, для которых я создал представление: 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")
затем это работает, но повреждает другие поисковые запросы (такие как поиск просто яблока) и от пользователя, пишущего запрос, это не имеет большого смысла как, что они, вероятно, запишут, И но это требует ИЛИ работать.
То, что я хочу, является этим, чтобы возвратиться, если бы между двумя критерий поиска был допустим, таким образом, это соответствовало бы всем поставщикам, названным яблоком с iTunes названия продукта, например.
Я должен создать отдельное поле в представлении, которое связывает Поставщика и поля продукта и выполняет первый запрос на том новом поле или является там чем-то, что я пропускаю?
Кроме этого кто-либо знал бы о существующем методе проверки запросов?
В ранних версиях SQL Server
запросы сопоставляли несколько столбцов.
Однако это считалось ошибкой.
Для сопоставления по нескольким столбцам необходимо объединить их в вычисляемый столбец и создать индекс по этому столбцу.