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

Avr*_*rom 5 sql-server full-text-search

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

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

但是,如果我搜索:

select * from MyTable where contains (fullName, '"o''Brien*"')
Run Code Online (Sandbox Code Playgroud)

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

select * from MyTable where contains (fullName, '"oBrien*"')
Run Code Online (Sandbox Code Playgroud)

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

简而言之,我想知道 FTS 是否可以将“O'Brien”和“OBrien”都索引为“obrien”,以便我可以找到两者。

而解决方案:

select * from MyTable where contains (fullName, '"oBrien*" OR "o''Brien*"')
Run Code Online (Sandbox Code Playgroud)

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

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

Bet*_*eth 0

根据您有多少空间,您可以添加另一列

全名_无标点符号

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