4

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

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

当我使用以下谓词时

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

当德国被指定为语言时,目录上ACCENT_SENSITIVITY = OFF的搜索结果是相同的,例如“Lächeln”和“lacheln”。

但是如果我改变谓词看起来像

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

那么结果就不同了,在我看来,口音不敏感不适用于FORMSOF

我试图在 MSDN 和 Google 上找到答案,但没有发现任何有用的东西。

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

谢谢!

4

2 回答 2

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

于 2011-10-28T18:23:55.977 回答
0

FORMSOF 从你的话中删去变音符号:

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

检查列“display_term”。

于 2012-10-16T08:59:18.170 回答