首先,你需要启用全文搜索索引在生产服务器上,所以如果这不在范围内,你不会想要这样做。
但是,如果已经准备好了,全文搜索就相对简单了。
T-SQL具有用于全文搜索4个谓词:
- FREETEXT
- FREETEXTTABLE
- CONTAINS
- CONTAINSTABLE
FREETEXT是最简单的,并且可以做到像这样:
SELECT UserName
FROM Tbl_Users
WHERE FREETEXT (UserName, 'bob')
Results:
JimBob
Little Bobby Tables
FREETEXTTABLE与FreeTEXT的工作方式相同,只是它将结果作为表格返回。
T-SQL的全文搜索的真正动力来自于CONTAINS(和CONTAINSTABLE)断言...这一个是巨大的,所以我就贴在它的用法:
CONTAINS
({ column | * } , '<contains_search_condition>'
)
<contains_search_condition> ::=
{ <simple_term>
| <prefix_term>
| <generation_term>
| <proximity_term>
| <weighted_term>
}
| { (<contains_search_condition>)
{ AND | AND NOT | OR } <contains_search_condition> [ ...n ]
}
<simple_term> ::=
word | " phrase "
< prefix term > ::=
{ "word * " | "phrase * " }
<generation_term> ::=
FORMSOF (INFLECTIONAL , <simple_term> [ ,...n ])
<proximity_term> ::=
{ <simple_term> | <prefix_term> }
{ { NEAR | ~ } { <simple_term> | <prefix_term> } } [ ...n ]
<weighted_term> ::=
ISABOUT
({ {
<simple_term>
| <prefix_term>
| <generation_term>
| <proximity_term>
}
[ WEIGHT (weight_value) ]
} [ ,...n ]
)
这意味着你可以写的查询,如:
SELECT UserName
FROM Tbl_Users
WHERE CONTAINS(UserName, '"little*" NEAR tables')
Results:
Little Bobby Tables
祝你好运:)
我已经投票赞成并将其作为答案,不仅因为它是一个很好而详细的回应,而且也是针对xkcd参考。赢得。 – 2008-10-14 19:50:39