如何让Lucene得分来解释未在搜索条件中指定的单词?

时间:2015-04-20 23:24:46

标签: lucene

我可能会问一个名字,它与贝叶斯统计数据有关。

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

鉴于“西北大道”和“西北岸大道”都是有效的街道名称,在搜索“1000”时,如何让Lucene在“2000 West North Avenue”上获得高于“1000 West North Shore Avenue”的分数^ 0.001西北大道“?

1000 ^ 0.001意味着,该数字应该用于打破平局,但是否则匹配街道名称比将正确的数字与错误的街道匹配更重要。

不幸的是,在这个例子中,1000 ^ 0.001导致错误匹配(北岸)超越正确的匹配。

使用什么评分算法可以让Lucene在搜索中未指定索引字词时向下调整分数,罕见字词的重量超过常用字词?

1 个答案:

答案 0 :(得分:1)

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

  1. 将数字和街道名称提取到两个不同的字段street_nb,street_nm。并单独索引它们。
  2. 现在为您的查询使用两个子句,一个,目标street_nb是必须的,另一个应该是。因此,您确保单独的街道名称将匹配,然后如果名称匹配,甚至更好。
  3. 你可以做除此之外的其他事情,例如使用短语强制在街道名称上进行完美匹配等。玩弄变体直到它给你带来好结果。