Lucene默认会对搜索结果按照匹配度大小排序,然而一般情况下我们需要对结果按照时间降序排.要实现这样的效果其实并不难,两步就搞定了:

1.建立索引时,创建一个域,用来存储文件的最后修改日期. 需要注意的是必须要使用Field.Index.UN_TOKENIZED,至于Field.Store.NO如何设置不影响结果.可按实际情况处理.


...
doc.add(new Field("lastModifiedTime", String.valueOf(new File(fileName).lastModified()),Field.Store.NO, Field.Index.UN_TOKENIZED));
...

2.搜索结果时.创建一个Sort实例,这个Sort实例用来指明用哪一个字段排序,是升序还是降序.

...
Sort sort = new Sort("lastModifiedTime", true);
Hits hits = searcher.search(query, sort);

...

Sort构造函数的第二个参数表示是否要反转排序结果? 默认为false,表示升序.

VN:F [1.7.9_1023]
Rating: 0.0/10 (0 votes cast)
VN:F [1.7.9_1023]
Rating: 0 (from 0 votes)

标签:,

Leave your comment