【发布时间】:2011-03-22 20:27:18
【问题描述】:
我有一个包含以下字段(标题、正文、新闻日期)的新闻存储
我需要符合以下条件的最佳查询
1) 标题更重要但比日期更重要
2)如果文档的日期接近当前日期,则日期应与当前日期进行比较,它更有价值(注意:这并不意味着按新闻日期降序排序,因为可能会导致其标题及其正文是更相关但更旧)
这只是搜索的另一个因素,我认为它需要自定义排序
3) body has 排在第三位
有什么办法吗?
【问题讨论】:
我有一个包含以下字段(标题、正文、新闻日期)的新闻存储
我需要符合以下条件的最佳查询
1) 标题更重要但比日期更重要
2)如果文档的日期接近当前日期,则日期应与当前日期进行比较,它更有价值(注意:这并不意味着按新闻日期降序排序,因为可能会导致其标题及其正文是更相关但更旧)
这只是搜索的另一个因素,我认为它需要自定义排序
3) body has 排在第三位
有什么办法吗?
【问题讨论】:
就像@Guillaume 所说,你需要使用提升。
您可以在两个地方使用:一个在索引时(提升标题和正文),第二个(日期字段)在查询时。日期字段是查询时间,因为它是动态的
索引时间提升如下:
字段 fld = new Field(....); fld.setBoost(10f);//重要10倍,默认为1
查询时间提升将获取日期差异(例如以天或分钟为单位)并反向应用提升,即差异越大。提升越小。
【讨论】:
您应该在架构中使用 Boosting,而不是非常复杂的查询。
【讨论】: