【问题标题】:Query for lucene search result查询lucene搜索结果
【发布时间】:2011-03-22 20:27:18
【问题描述】:

我有一个包含以下字段(标题、正文、新闻日期)的新闻存储
我需要符合以下条件的最佳查询

1) 标题更重要但比日期更重要
2)如果文档的日期接近当前日期,则日期应与当前日期进行比较,它更有价值(注意:这并不意味着按新闻日期降序排序,因为可能会导致其标题及其正文是更相关但更旧) 这只是搜索的另一个因素,我认为它需要自定义排序
3) body has 排在第三位

有什么办法吗?

【问题讨论】:

    标签: search sorting lucene


    【解决方案1】:

    就像@Guillaume 所说,你需要使用提升。

    您可以在两个地方使用:一个在索引时(提升标题和正文),第二个(日期字段)在查询时。日期字段是查询时间,因为它是动态的

    1. 索引时间提升如下:

      字段 fld = new Field(....); fld.setBoost(10f);//重要10倍,默认为1

    2. 查询时间提升将获取日期差异(例如以天或分钟为单位)并反向应用提升,即差异越大。提升越小。

    【讨论】:

    • 您不需要提升标题或正文。因为 Lucene 会自动降低较长文本字段的分数,所以无论如何正文的分数都会低于标题。
    • 希望您没有想到可以让 SO 用户为您完成工作。只需谷歌即可。
    • 如你所说,如果 #2 仅与提升有关,我认为该短语少于 15 个字符,我认为我们是来分享知识而不是谷歌搜索,因为每个人都知道先用谷歌搜索然后在这里问
    • @Ehsan - 我希望我们能先用谷歌搜索一下......如果你用谷歌搜索,你会注意到顶部的这个链接:bit.ly/bcYWtJ你能具体谈谈你的问题吗?它会帮助别人帮助你。
    【解决方案2】:

    您应该在架构中使用 Boosting,而不是非常复杂的查询。

    【讨论】:

    • 你能给我举个例子吗?
    猜你喜欢
    • 1970-01-01
    • 2019-05-12
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多