从SQL Server全文搜索中排除撇号

时间:2010-08-27 20:02:02

标签: sql-server full-text-search

我想知道如何在全文搜索中将撇号排除在索引之外。

例如,如果有人输入“o'brien”或“obrien”的搜索词,我希望它能匹配某人姓名与“O'Brien”或“OBrien”匹配的所有情况。

但是,如果我搜索:

select * from MyTable where contains (fullName, '"o''Brien*"')

它只返回带撇号的那些。 但如果我这样做:

select * from MyTable where contains (fullName, '"oBrien*"')

它只返回没有撇号的那些。

简而言之,我想知道FTS是否有可能将“O'Brien”和“OBrien”都标记为“obrien”,以便我可以找到它们。

虽然解决方案:

select * from MyTable where contains (fullName, '"oBrien*" OR "o''Brien*"')

会起作用,但是,如果用户输入“obrien”,我就无法做出这样的假设。

我正在寻找适用于SQL Server 2005和2008的解决方案。

1 个答案:

答案 0 :(得分:0)

取决于你有多少空间,你可以添加另一列

  

fullName_noPunctuation

仅包含名称的字母字符,从搜索条件中删除标点符号,然后搜索无标点符号列。