如何搞定 lucene3.0 自定义排序
本文引言: 利用别人的东西写东西,最好看别人的源码!
思路最重要!
自定义排序思路:继承FieldComparatorSource类并在此类的newComparator方法中返回一个FieldComparator类的子类
4、compareBottom :看API描述"Compare the bottom of the queue with doc." 这个方法lucene时候调用呢,从描述来看是doc序列的尾部,呵呵,自定义排序列中的bottom属性值就是,我们要拿出来的序列中最后面的那个。 流程是: 如果优先队列满了,则先和最低层的比较,如果大于最底层的则先替代最底层的,然后对优先队列重新排序 ,队列的最大值是 通过ndexSearcher.search方法中可以设置的,当然 lucene的队列的长度最大值 我看了 应该是 2亿多。所以不用担心了。那么对列什么时候满了呢?队列的最大值是什么呢?答案是: 队列的最大值 由用户自己设定,TopDocs topDocs = indexSearcher.search(query, null, 3004, sort);这句话中 的第三个参数就是了
//按照时间的正序排列,如果SortField的第三个参数为true , 则为倒序SortField sortField = new SortField("createDate", new MySortComparatorSource(), true);Sort sort = new Sort (); sort.setSort(sortField);TopDocs topDocs = indexSearcher.search(query, null, 1000, sort); //这里的第三个参数要注意,设定将要返回结果集的长度。ScoreDoc[] scoreDocs = topDocs.scoreDocs;写的 很匆忙,,继续留个备用。。。 “唯有努力”
1 楼 abcstring 2011-12-10 不错 备用一下