Проблема с поисковым запросом в моем сервере Sql - PullRequest
0 голосов
/ 04 июня 2009

У меня есть следующий сохраненный процесс: -

SELECT Id, Name
FROM FooBars
WHERE CONTAINS(Name, 'FORMSOF(Tesaurus, @query)')

Отлично работает, когда в запросе есть одно слово: например. Foo * Но это терпит неудачу, когда я хочу иметь более одного слова, которое я пытаюсь найти. например. foo * bar * (это означает любые строки, в которых есть слова, начинающиеся с foo и начинающиеся с bar).

В каком формате должен выглядеть мой аргумент @query, чтобы включить несколько слов для полнотекстового поиска с тезаурусом?

1 Ответ

1 голос
/ 04 июня 2009

Насколько я знаю, если вы хотите найти два или более выражений, вам нужно объединить их с помощью AND, OR или NEAR, что-то вроде этого (прямо из Books Online):

USE AdventureWorks;
GO

SELECT Name
FROM Production.Product
WHERE CONTAINS(Name, '"chain*" OR "full*"');
GO

SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, 'bike NEAR performance');
GO

SELECT Description
FROM Production.ProductDescription
WHERE ProductDescriptionID <> 5 AND
CONTAINS(Description, ' Aluminum AND spindle');

Если и как это будет работать вместе с вашим выражением FORMSOF (...), мне неясно - но я уверен, что вы могли бы быстро это попробовать, нет?

SELECT Id, Name
FROM FooBars
WHERE CONTAINS(Name, 'FORMSOF(THESAURUS, "foo*")'
    OR 'FORMSOF(THESAURUS, "bar*")')

Также убедитесь, что в выражении FORMSOF () правильно написано "тезаурус"! : -)

Марк

...