我想知道如何在全文搜索中将撇号排除在索引之外。
例如,如果有人输入“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的解决方案。
答案 0 :(得分:0)
取决于你有多少空间,你可以添加另一列
fullName_noPunctuation
仅包含名称的字母字符,从搜索条件中删除标点符号,然后搜索无标点符号列。