Sql-server全文CONTAINS + COLLATE忽略重音问题

时间:2009-12-10 17:57:08

标签: sql sql-server full-text-search

大家好我在这里努力使用COLLATE来忽略重音,同时也使用包含全文。

我已经将列搜索减少到这里的示例只有一个,并且我只是硬编码实际参数,直到我理解它为止。

如果我有

SELECT 
     Col1,
     Title COLLATE SQL_Latin1_General_Cp850_CI_AI AS Title,
     ColX
FROM
     Foo
WHERE 
     CONTAINS((Title),  '"suenos" OR "french"') 

这只会返回法语结果。如果我在例如:

之后添加外卡
 WHERE 
     CONTAINS((Title),  '"suenos*" OR "french"') 

我得到了Sueños和法语的结果。我已经注意到了LIKE和COLLATE的相同行为,例如它只有'suenous%'的词与'suenos'相对应。

为什么会这样?

非常感谢。

1 个答案:

答案 0 :(得分:7)

假设:您使用的是sql2005或更高版本。

我相信你需要在首次创建索引时将Accent Sensitivity设置为ON或OFF。

CREATE FULLTEXT CATALOG AwCat WITH ACCENT_SENSITIVITY=OFF
GO

或改变它:

ALTER FULLTEXT CATALOG AwCat REBUILD WITH ACCENT_SENSITIVITY=ON
GO

你可以在这里找到更多Microsoft SQL Server 9.0 Technical Articles SQL Server 2005 Full-Text Search: Internals and Enhancements