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

本文链接地址: http://www.jssay.com/blog/index.php/2009/12/17/lucene%e6%90%9c%e7%b4%a2%e7%bb%93%e6%9e%9c%e6%8c%89%e6%97%b6%e9%97%b4%e6%8e%92%e5%ba%8f%e9%97%ae%e9%a2%98/


随机日志

标签:

发表评论