2013-12-13 2 views
-1

Я пытаюсь сделать бесплатный текстовый поиск. в основном строка поиска отправляется в хранимую процедуру, где выполняется бесплатный текстовый поиск и возвращает результат.SQL Server Бесплатный текстовый поиск с несколькими поисковыми словами внутри хранимой процедуры

Если я ищу red flag, я хочу вернуть результаты, соответствующие красным и флаговым текстам.

Ниже приведен запрос, который я использую для возврата результатов.

select * from customer where FREETEXT (*, '"RED" and "flag"') 

Это не дает мне желаемого результата. Вместо этого он дает желаемый результат.

select * from customer where FREETEXT (*, 'RED') AND FREETEXT (, 'FLAG') 

Моя проблема в том, что она находится внутри хранимой процедуры, я не смогу создать второй запрос where where. Я думал, что оба запроса должны возвращать тот же результат. Я здесь что-то не так?

ответ

0

Вы должны использовать CONTAINS вместо FREETEXT:

select * from customer where CONTAINS(*, '"RED" and "flag"')

СОДЕРЖИТ поддерживает булеву синтаксис. FREETEXT не делает - это скорее естественный тип поиска.

Смежные вопросы