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,表示升序.
本Blog文章除特别声明之外皆为原创文章,欢迎转载,转载请注明: 转载自JSSAY'S BLOG