如何让Lucene评分解释搜索词中未指定的词?

如何让Lucene评分解释搜索词中未指定的词?,lucene,Lucene,我所问的可能有一个名字,它与贝叶斯统计有关 我有一个街道地址数据库,我正在使用Lucene匹配用户输入的地址(如果你需要一个类比,假设我为谷歌地图工作) 考虑到“西北大道”和“西北岸大道”都是有效的街道名称,在搜索“1000^0.001西北大道”时,我如何使Lucene的“2000西北大道”得分高于“1000西北岸大道” 1000^0.001意味着,数字应该用来打破平局,但如果不这样,匹配街道名称比匹配正确的数字和错误的街道更重要 不幸的是,在本例中,1000^0.001导致错误匹配(北岸)超前

我所问的可能有一个名字,它与贝叶斯统计有关

我有一个街道地址数据库,我正在使用Lucene匹配用户输入的地址(如果你需要一个类比,假设我为谷歌地图工作)

考虑到“西北大道”和“西北岸大道”都是有效的街道名称,在搜索“1000^0.001西北大道”时,我如何使Lucene的“2000西北大道”得分高于“1000西北岸大道”

1000^0.001意味着,数字应该用来打破平局,但如果不这样,匹配街道名称比匹配正确的数字和错误的街道更重要

不幸的是,在本例中,1000^0.001导致错误匹配(北岸)超前于正确匹配


什么评分算法可以使Lucene在搜索中无法指定索引项时向下调整评分,罕见项比普通项更重要?

我会通过仔细标记街道名称来解决这个问题。例如,您可以这样做:

  • 将编号和街道名称提取到两个不同的字段street_nb和street_nm。并分别为它们编制索引
  • 现在在查询中使用两个子句,一个是MUST,另一个是SHOULD。因此,您要确保街道名称单独匹配,如果名称匹配,则更好
  • 除此之外,你还可以做不同的事情,比如用短语在街道名称上强制匹配,等等。玩各种变体,直到它给你带来好的结果