我正在使用带有全文搜索的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上找到答案,但没有找到任何有用的信息。
有人知道为什么结果不同吗?
谢谢!
答案 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”。