我在SQL Server 2005中设置了FT搜索,但我似乎无法找到一种方法将“Lias”关键字与“Lia's”匹配。我基本上想要的是允许人们在没有撇号的情况下进行搜索。
我已经在这个问题上做了很长一段时间了,所以任何帮助都真的是一种祝福。
答案 0 :(得分:1)
我没有在本地安装FT并且没有对此进行测试 - 您可以使用CONTAINS的语法来测试原始出现和带有撇号的剥离,即:
SELECT *
FROM table
WHERE CONTAINS ('value' OR Replace('value', '''',''))
编辑:您可以使用双引号搜索短语,例如
SELECT *
FROM table
WHERE CONTAINS ("this phrase" OR Replace("this phrase", '''',''))
见MSDN documentation for CONTAINS。这实际上表明标点符号无论如何都会被忽略,但我还没有测试过;可能值得自己尝试CONTAINS('value')
。
答案 1 :(得分:0)
我没有使用过FT,但是在对varchar列进行查询,并寻找像O'Reilly这样的姓氏时,我用过:
surname like Replace( @search, '''', '') + '%' or
Replace( surname,'''','') like @search + '%'
这允许撇号位于数据库值或搜索项中。它显然也会像一只带有大桌子的狗一样表现。
替代方案(也可能不是一个好的方法)是保存数据的第二个副本,去掉非字母字符,并对该副本进行搜索(也是?)。所以原版将包含Lia's和第二版Lias。加倍存储量等。
答案 2 :(得分:0)
另一次尝试:
SELECT surname
FROM table
WHERE surname LIKE '%value%'
OR REPLACE(surname,'''','') LIKE '%value%'
这对我有用(没有启用FT),即在搜索O'Connor或OConnor时得到相同的结果。