【问题标题】:Strange SQL Server Fulltext match奇怪的 SQL Server 全文匹配
【发布时间】:2013-03-27 12:58:24
【问题描述】:

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

我已将这段文字编入索引:

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

我三重检查:edi 一词的唯一出现是在这个简短的 sn-p 文本中,我只能在 Editorerstellung 和 Modellierungseditors。

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

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

【问题讨论】:

    标签: sql-server full-text-search full-text-indexing


    【解决方案1】:

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

    您看到的行为很可能是由于分词器中使用了启发式方法。我无法使用上面的 sn-p 和 Sql Server 2012 分词器重现您的问题,因此微软对 Sql Server 2008 R2 和 Sql Server 2012 之间的德语分词器的改进解决了问题或您没有解决的一些文本include是全文索引中“edi”的来源。

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

    【讨论】:

    • 感谢您的回复!不幸的是,我仍然可以在 SQL Server 2012 中重现该问题。我三重检查,“edi”的唯一出现是在“Editorerstellung”和“Modellierungseditor”这两个词中。不过,我认为你是对的,断词者是罪魁祸首。再次感谢。
    猜你喜欢
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多