我的文档中有三个字段
标题
内容
修改日期
因此,当我term
按照排序的结果搜索它的时候score
现在我想进一步对结果进行排序,基于同样的分数,modifiedDate
即以相同的分数显示最近的文档.
我尝试按分数排序,修改日期,但它不起作用.有人能指出我正确的方向吗?
这可以通过定义排序来完成:
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
字符串方法,因为它提供了一些更好的处理它们的工具,特别是在精度方面,但两种方法都可以工作.