使用FORMSOF和Accent Insensitive的SQL Server 2008 R2全文搜索

时间:2011-04-12 15:35:09

标签: sql full-text-search sql-server-2008-r2 diacritics formsof

我正在使用带有全文搜索的MS SQL Server 2008 R2来搜索以不同语言存储的文本数据。

我对CONTAINS谓词如何使用重音符有点困惑。

当我使用以下谓词时

CONTAINS([Text], @keywords  , Language @language)
ACCENT_SENSITIVITY = OFF目录上的

,搜索结果与例如当德国被指定为语言时,'Lächeln'和'lacheln'。

但是,如果我将谓词更改为

CONTAINS([Text], FORMSOF(INFLECTIONAL, @keywords)  , Language @language) 

然后结果不同,在我看来,Accent Insensitivity不适用于FORMSOF

我试图在MSDN和Google上找到答案,但没有找到任何有用的信息。

有人知道为什么结果不同吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我的理解是,这些用于查找全文搜索匹配的两个不同目的。对于重音不敏感的目录,为术语匹配执行简单的字符相等,以便eñya= enya,因为'n'被认为是'ñ'的重音不敏感。

使用FORMSOF,您要求搜索对条款执行词干操作,以便在搜索中将动词和名词形式作为附加词搜索。例如搜索'foot'将包括'feet','run'将包括'ran'。

如果FORMSOF似乎从根本上不适用于您的值,您可能需要确保为全文语言安装了相应的语言支持。 SELECT * FROM sys.fulltext_languages

如果您没有机会查看MSDN,SQL Word Breakers文档可能会对观察到的行为有所了解。 http://msdn.microsoft.com/en-us/library/ms142509.aspx

答案 1 :(得分:0)

FORMSOF会从你的话语中删除变音符号:

SELECT * FROM sys.dm_fts_parser(N'FORMSOF(INFLECTIONAL, "Lächeln")', 1031, 0, 1)

检查列“display_term”。