SQL свободный текст и лайк - PullRequest
1 голос
/ 23 октября 2009

Если я использую как '% fish%', возвращается следующее

ВОДОЛЕЗНЫЕ ЗОЛОТЫЕ РЫБЫ

но если я использую Contains ([описание], '"fish *"'), это не то, что я могу сделать?

По сути, я хочу вернуть что угодно, где есть слово "рыба".

1 Ответ

4 голосов
/ 23 октября 2009

А как же

 CONTAINS([Description], '"fish"') 

или

 FREETEXT([Description], 'fish') 

Это тебе что-нибудь дает?

Полнотекстовая индексация SQL Server не поддерживает поиск выражения с лидирующим подстановочным знаком, например, Вы не можете перейти на CONTAINS([Description], '"*fish*"') или что-то в этом роде: - (

Что вы также можете сделать, это определить свой собственный синоним полнотекстового поиска, например, определите «золотую рыбку» как синоним «рыбы» - тогда вы сможете найти только «рыбка» и найти «золотую рыбку».

SELECT (list of fields) FROM YourTable
WHERE CONTAINS([Description], 'FORMSOF(THESAURUS, fish)')

Извлечение Общие сведения о полнотекстовой индексации в SQL Server - в статье есть хороший раздел, посвященный изменению тезауруса полнотекстовых данных.

Марк

...