【问题标题】:How to get Lucene scoring to account for words not specified in search terms?如何让 Lucene 评分来解释搜索词中未指定的单词?
【发布时间】:2015-04-20 23:24:46
【问题描述】:

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

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

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

1000^0.001 的意思是,应该使用该号码来打破平局,但是匹配街道名称比匹配正确的号码与错误的街道更重要。

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

什么评分算法可以让 Lucene 向下调整分数,因为没有在搜索中指定索引词,稀有词比常见词更重要?

【问题讨论】:

    标签: lucene


    【解决方案1】:

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

    1. 将编号和街道名称提取到两个不同的字段 street_nb、street_nm。并将它们单独编入索引。
    2. 现在为您的查询使用两个子句,一个是必须以 street_nb 为目标,另一个应该。所以你要确保街道名称单独匹配,然后如果名称匹配,那就更好了。
    3. 除此之外,您还可以做不同的事情,例如使用短语强制街道名称完美匹配等。尝试各种变体,直到获得好的结果。

    【讨论】:

      猜你喜欢
      • 2012-02-03
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多