代码之家  ›  专栏  ›  技术社区  ›  Jammin

SQL Server全文包含+collate以忽略重音符号问题

  •  4
  • Jammin  · 技术社区  · 16 年前

    大家好,我在使用collate忽略重音的同时,也使用contains全文时遇到了一些困难。

    对于这个例子,我把我搜索的列简化为一列,然后我硬编码实际参数,直到我理解它。

    如果我有

    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"') 
    

    我得到了苏·奥斯和法语的结果。我注意到相同的行为与“like”和“collate”,例如它只与“suenos”对应的“suenous%”。

    为什么会这样?

    非常感谢。

    1 回复  |  直到 16 年前
        1
  •  7
  •   Glennular    16 年前

    假设:您使用的是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 Technical Articles SQL Server 2005 Full-Text Search: Internals and Enhancements