【问题标题】:zend lucene problem with the word "mortgage"“抵押”一词的zend lucene问题
【发布时间】:2009-12-21 19:18:24
【问题描述】:

我正在使用 Porter Stemmer 来阻止单词,这是我遇到的一个问题:

单词“mortgage”正确地词根为“mortgag” “mortgagee”一词(可以说是错误的)源于“mortgage”

大约有 100 个文档带有“mortgage”一词 有 1 份文件包含“mortgagee”字样

当我在没有将“mortgagee”放入任何文档的情况下构建索引时,一切正常:搜索“mortgage”或“mortgages”或“mortgag”会返回所有 100 个文档。

当我建立一个索引并且其中一个文档包含“mortgagee”时,在索引中搜索“mortgagee”只会返回一个带有“mortgagee”的文档(它被归结为“mortgagee”)。但是,搜索“mortgag”或“mortgages”会返回所有 100 个文档。

我可以从这个问题中得出的唯一合乎逻辑的结论是 lucene 首先搜索词干词,如果没有找到任何结果,它会继续搜索词干词。因此,在搜索“mortgage”时,它首先找到源自“mortgagee”的“mortgage”并停止搜索。这是正确的行为,还是错误?

【问题讨论】:

    标签: php zend-search-lucene lucene


    【解决方案1】:

    这对我来说听起来像是一个错误。 Lucene 搜索的指导原则说:“使用与索引相同的分析器进行搜索,除非你有充分的理由不这样做”。在分析和词干提取之后,Lucene 应该返回它所拥有的搜索词的匹配项。

    在您的情况下,“mortgage”在索引期间被转换为“mortgag”。检索过程应反映这一点,并将“mortgage”转换为“mortgag”,然后找到“mortgag”(表示“mortgage”)的匹配项。

    似乎在检索期间您没有阻止查询,这会导致错误的结果。 如果这个答案不清楚,请编辑您的问题并添加几行代码来描述您如何创建索引以及如何搜索它。

    【讨论】:

      猜你喜欢
      • 2020-03-13
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      相关资源
      最近更新 更多