Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 使用lucene对搜索结果排序
【标  题】:使用lucene对搜索结果排序
【关键字】:lucene
【来  源】:http://blog.csdn.net/pwlazy/archive/2006/08/18/1093566.aspx

使用lucene对搜索结果排序

Your Ad Here lucene默认根据匹配度对搜索结果降序排,如果对某个域进行排序?
通常分两步:

 step1)建索引时
doc.add(new Field("audittime", row.get("audittime").toString(),
                Field.Store.NO, Field.Index.UN_TOKENIZED));

关键点是你需要排序的字段建索引时应该采用Field.Index.UN_TOKENIZED,至于需不需要Field.Store.NO看实际情况,反正不影响排序

step2)搜索时
public Hits search(SearchVO searchVO) throws IOException {
        ................

        Sort sort 
= this.buildSort(searchVO);

        Hits hits 
= searcher.search(query, sort);

        
return hits;
}


private Sort buildSort(SearchVO searchVO) {

        
if (searchVO.getOrderby() == null || searchVO.getOrderby().length() < 1{
            
return null;
        }


        Sort sort 
= new Sort(searchVO.getOrderby(),
                (searchVO.getAscflag() == 1 ? false : true
));

        
return sort;

}

 关键点是通过建立一个Sort实例然后传给IndexSearcher 的另一个重载方法search(Query query,Sort sort);

通过Sort你可以指定排序字段名,升序降序.

如果你需要特指字段类型,你需要使用  new Sort(SortField field)
或者你需要通过多字段排序,你需要使用  new Sort(SortField[] fields)
我就不再赘述了

题外话:
   
使用lucene 排序是很简单的,但如何发挥它的效果是一个值得思考的地方.
   
如果你是实时的更新lucene索引我没话说(这需要相当谨慎的设计).

如果你定时更新索引,就会有些问题,比如你要排序的字段更新速度很快,你应该如何显示它? 因为你排序的数据(即建索引时的数据)和当前的数据并不完全同步,这会给显示带来问题.如果你显示建索引时的数据,这样排序本身没问题,但客户会很奇怪我的数据明明是6了怎么还显示4.如果你显示当前的数据就更奇怪了,客户可能会奇怪我的数据是1000怎么排名第4,排名第一的才500?  如果你的数据更新缓慢,这样做不会有什么问题.但更新很快的话就是灾难了.




基于Struts的AJAX:【上一篇】
谈谈Java Web开发的学习路径:【下一篇】
【相关文章】
  • Compass--在Lucene之上作了什么增强?(Pragmatic系列)
  • Lucene之搜索篇
  • ShootSearch (基于dotlucene的开源搜索引擎)
  • Lucene in Action (中文)
  • Hibernate与Lucene集成
  • Lucene之开山篇
  • Lucene 索引常见格式的文件代码
  • Lucene.net中的异常处理
  • Inside Lucene/超人气搜索引擎学习(2.0)-读取索引
  • Lucene中的基本概念
  • 【随机文章】
  • 用Flash打造迷你Winamp播放器
  • 6.3 设置Authorware 属性
  • mouse.c
  • 文章中要用到图片,怎么能把图传上来啊?
  • 存储过程---实践
  • 全面了解系统中 svchost.exe 文件
  • C盘被锁死
  • 用Java编写的记事本程序(1)
  • 手把手教delphi:写你的dll文件(1)
  • 我所理解的SOA
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.