2

我在 SQL Server 2008 R2 中偶然发现了奇怪的全文索引行为(我的断字语言是德语)。

我有这个文本索引:

[...] Java Editorerstellung in Eclipse eines Modellierungseditors(UML) mit den Eclipse Technologien [...]

我三重检查:edi一词的唯一出现是在这段简短的文本中,我只能在Editorerstellung und Modellierungseditors中找到它。

但是 SQL Server 在它的全文索引中仍然将edi作为一个单词(出现次数:1),因此在ContainsTable(...)搜索时返回它。为什么它被识别为一个单词?

有人对这种行为有解释吗?谢谢。

4

1 回答 1

0

德语复合词需要在自然语言分词器中进行特殊解析。例如,“Editorerstellung”被解析并存储为三个单独的术语,“editor”、“erstellung”和“editorerstellung”。已经对分析德语复合词进行了广泛的研究,虽然技术正在改进,但过程并不完美。

您看到的行为很可能是由于在断词器中使用了启发式方法。我无法使用上述代码段和 Sql Server 2012 分词器重现您的问题,因此微软在 Sql Server 2008 R2 和 Sql Server 2012 之间对德语分词器的改进解决了该问题,或者您未包含的某些文本是全文索引中“edi”的来源。

您可以使用 sys.dm_fts_index_keywords_by_document() 查看索引中有哪些术语。使用二进制搜索模式,您应该能够将其缩小到生成“edi”术语的特定文本。

于 2013-06-21T18:11:42.637 回答