当前位置:  开发笔记 > 编程语言 > 正文

Lucene按分数排序然后修改日期

如何解决《Lucene按分数排序然后修改日期》经验,为你挑选了1个好方法。

我的文档中有三个字段

    标题

    内容

    修改日期

因此,当我term按照排序的结果搜索它的时候score

现在我想进一步对结果进行排序,基于同样的分数,modifiedDate即以相同的分数显示最近的文档.

我尝试按分数排序,修改日期,但它不起作用.有人能指出我正确的方向吗?



1> femtoRgon..:

这可以通过定义排序来完成:

Sort sort = new Sort(
    SortField.FIELD_SCORE, 
    new SortField("myDateField", SortField.Type.STRING));
indexSearcher.search(myQuery, numHits, sort);

这里有两个可能的陷阱:

您应该确保您的日期以可搜索且可排序的形式编制索引.通常,实现此目的的最佳方法是使用转换它DateTools.

该字段用于排序必须被索引,并且应当被分析(一StringField,例如).由您决定是否存储.

因此,添加日期字段可能如下所示:

Field dateField = new StringField(
    "myDateField", 
    DateTools.DateToString(myDateInstance, DateTools.Resolution.MINUTE),
    Field.Store.YES);
document.add(dateField);

注意:您还可以使用日期作为数字字段索引Date.getTime().我更喜欢DateTools字符串方法,因为它提供了一些更好的处理它们的工具,特别是在精度方面,但两种方法都可以工作.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有