<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    皮杜妮

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      887 Posts :: 3 Stories :: 7 Comments :: 0 Trackbacks
    lucene查詢結果需要先分組后排序, 看了相關文檔,lucene提供了分組 排序功能,但是比較消耗內容,實際情況是 我們一般只需要前面的1000條, 所以我自己實現了排序算法,盡量少占用內容。
    方法如下:


    // 分組統計方式
        /**
         *
         * @param topnumber  取分組后的前幾條數據
         * @return
         */
        public static List cachegroup(int topnumber) {
            try {
                int page = 30000;
                String filePath = "D://lucene/index2";
                File dirfile = new File(filePath);
                Directory dir = FSDirectory.open(dirfile);
                IndexReader reader = DirectoryReader.open(dir);
                IndexSearcher indexSearcher = new IndexSearcher(reader);
                String searchTerm = "aaa";
                boolean getScores = true;
                boolean getMaxScores = true;
                boolean fillFields = true;
                GroupingSearch groupingSearch = new GroupingSearch("author");
                groupingSearch.setGroupSort(Sort.RELEVANCE);
                groupingSearch.setFillSortFields(true);
                groupingSearch.setCachingInMB(40.0, true);
                groupingSearch.setAllGroups(true);
                TermQuery query = new TermQuery(new Term("content", searchTerm));
                TopDocs hits = indexSearcher.search(query, 100);
                int count = hits.totalHits;
                int mode = count % page;
                int times = count / page;
                if (mode != 0)
                    times = times + 1;
                List indexvalue = new LinkedList();
                for (int i = 0; i < times; i++) {
                    int groupoffset = i * page;
                    TopGroups<BytesRef> result = groupingSearch.search(
                            indexSearcher, query, groupoffset, page);
                    GroupDocs<BytesRef>[] gds = result.groups;
                    for (GroupDocs<BytesRef> gd : gds) {
                        indexvalue.add(new FieldSort(gd.totalHits, gd.groupValue
                                .utf8ToString()));
                    }
                    Comparator comp = Collections.reverseOrder();
                    Collections.sort(indexvalue, comp);
                    indexvalue = indexvalue.subList(0, topnumber);
                }
                return indexvalue;
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            return null;
        }

        
        public static void  readList(List list)
        {
            Iterator it=list.iterator();
            while(it.hasNext())
            {
                FieldSort fieldsort=(FieldSort)it.next();
                System.out.println(fieldsort.getFieldvalue()+"/"+fieldsort.getFieldname());
            }
        }





    package speed;

    import java.util.Comparator;



    public class FieldSort implements Comparable<FieldSort>{

        private int    fieldvalue;
        private String fieldname;
        public FieldSort() {
            super();
        }
        public FieldSort(int fieldvalue,String fieldname) {
            super();
            this.setFieldvalue(fieldvalue);
            this.setFieldname(fieldname);
        }

        public int getFieldvalue() {
            return fieldvalue;
        }
        public void setFieldvalue(int fieldvalue) {
            this.fieldvalue = fieldvalue;
        }
        public String getFieldname() {
            return fieldname;
        }
        public void setFieldname(String fieldname) {
            this.fieldname = fieldname;
        }
        @Override
        public String toString(){
            return fieldname+"/"+fieldvalue;
        }
        public int compareTo(FieldSort t){
            if(t==null)return 0;
            else{
                return this.fieldvalue-t.fieldvalue;
            }
        }

        

    }
    posted on 2013-09-24 16:34 豬眼睛 閱讀(636) 評論(0)  編輯  收藏 所屬分類: 搜索引擎
    主站蜘蛛池模板: 国产三级在线观看免费| 亚洲国产日韩在线人成下载| 亚洲va久久久噜噜噜久久狠狠 | 国产成人精品免费视频动漫| 亚洲AV成人一区二区三区观看 | 亚洲 欧洲 自拍 另类 校园| 精品国产污污免费网站入口| 中文字幕无码不卡免费视频| 在线观看亚洲精品国产| 亚洲色图激情文学| 精品一区二区三区免费| 国产麻豆免费观看91| 亚洲AV乱码久久精品蜜桃| 美女羞羞喷液视频免费| 国产精品1024永久免费视频| 亚洲午夜无码AV毛片久久| 亚洲精品精华液一区二区| 久久免费观看国产精品| 九月婷婷亚洲综合在线| 亚洲中文字幕久在线| 免费看无码特级毛片| 免费a在线观看播放| 亚洲看片无码在线视频| 小草在线看片免费人成视久网| 亚洲性久久久影院| 国产成人+综合亚洲+天堂| 手机在线免费视频| 亚洲高清无在码在线电影不卡 | 亚洲综合色7777情网站777| 免费成人在线视频观看| 亚洲中文字幕无码专区| 青青青亚洲精品国产| 一二三四视频在线观看中文版免费 | 国产成人精品男人免费| 亚洲情A成黄在线观看动漫软件| 91制片厂制作传媒免费版樱花| 国产亚洲人成无码网在线观看| 国产精品青草视频免费播放| 亚洲а∨天堂久久精品| 免费国产污网站在线观看不要卡| 午夜一级免费视频|