一尘不染

SQL Server全文CONTAINS + COLLATE忽略口音问题

sql

大家好,我在使用COLLATE忽略重音的同时还使用了Contains full text在这方面有些挣扎。

香港专业教育学院减少列搜索仅在这里的示例之一,并即时编码实际参数只是为了简单地做到这一点,直到我理解它。

如果我有

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和法语的搜索结果。Ive在LIKE和COLLATE中注意到了相同的行为,例如,它仅带有与’suenos’相对应的’suenous%’的单词。

为什么是这样?

非常感谢。


阅读 164

收藏
2021-05-30

共1个答案

一尘不染

假设:您正在使用sql2005或更高版本。

我相信您在首次创建索引时需要将“口音敏感度”设置为“开”或“关”。

CREATE FULLTEXT CATALOG AwCat WITH ACCENT_SENSITIVITY=OFF
GO

或更改它:

ALTER FULLTEXT CATALOG AwCat REBUILD WITH ACCENT_SENSITIVITY=ON
GO

您可以在此处找到更多信息Microsoft SQL Server 9.0技术文章SQL Server
2005全文本搜索:内部和增强功能

2021-05-30