2009-12-21 39 views
9

我使用波特施特默尔干的话,这里是我遇到一个问题:Zend的Lucene的问题单词“按揭”

字“抵押贷款”是否正确朵朵到“mortgag” 字“抵押权”是(可以说是不正确的)梗,以“按揭”

大约有100个文件与单词“按揭” 有1号文件与“抵押权人”字

当我建立索引,而不把“抵押权人“在任何文件中,一切工作正常:寻找”抵押“或”抵押“或” tgag“返回全部100个文件。

当我建立一个索引,其中一个文件包含“抵押权人”时,在索引中搜索“抵押权”只会返回一个带有“抵押权人”(这是“抵押权”)的文档。但是,搜索“抵押”或“抵押”将返回全部100个文件。

我可以从这个问题得出的唯一合乎逻辑的结论是lucene首先搜索预处理词,如果找不到任何结果,它将继续搜索词干词。因此,当搜索“抵押”时,它首先找到源自“抵押权人”的“抵押”并停止搜索。这是正确的行为,还是一个错误?

回答

1

这听起来像是一个bug。 Lucene搜索的一个指导原则是:“使用与索引相同的分析器进行搜索,除非您有真正的理由不要”。经过分析和发布后,Lucene应该返回匹配搜索条件。

就你而言,“抵押”在索引过程中转化为“抵押”。检索过程应反映这一点,并将“抵押”转换为“抵押”,然后找到“抵押”(代表“抵押”)的匹配。

看起来,在检索过程中,您不会阻止查询,从而导致错误的结果。 如果此答案不清楚,请编辑您的问题,并添加几行代码来描述您如何创建索引以及如何搜索它。