gpt4 book ai didi

php - zend lucene 单词 "mortgage"问题

转载 作者:可可西里 更新时间:2023-11-01 12:21:37 25 4
gpt4 key购买 nike

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

单词“mortgage”被正确地提取为“mortgag”单词“mortgagee”(可以说是错误的)词干为“mortgage”

大约有 100 份文件含有“抵押”一词有 1 个包含单词“mortgagee”的文档

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

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

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

最佳答案

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

在您的案例中,“mortgage”在索引期间被转换为“mortgag”。检索过程应该反射(reflect)这一点,并将“mortgage”转换为“mortgag”,然后找到“mortgag”(代表“mortgage”)的匹配项。

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

关于php - zend lucene 单词 "mortgage"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1942035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com