关于Lucene分组查询后的排序

来源:互联网 发布:天气软件手机版 编辑:程序博客网 时间:2024/05/20 16:13
int total = 0;            if (groupField != null) {                RAMDirectory ramDirectory = new RAMDirectory();                IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_32, getAnalyzer());                IndexWriter writer = new IndexWriter(ramDirectory, indexWriterConfig);                // 如果分组结果,使用分组控制器对结果分组                GroupingCollector groupingCollector = new GroupingCollector(sortField, desc, groupField);                searcher.search(query, groupingCollector);                List<Document> s_documents = groupingCollector.getDocuments();                writer.addDocuments(s_documents);                writer.optimize();                writer.close();                searcher = new IndexSearcher(ramDirectory);            }            // 如果不分组,直接对查询结果进行返回            TopDocs topFieldDocs = null;            if (!"".equals(Util.strNull(sortField))) {                int type = SortField.INT;                if (sortField.endsWith("date")) {                    type = SortField.LONG;                } else if (sortField.startsWith("nprice")) {                    type = SortField.DOUBLE;                }                topFieldDocs = searcher.search(query, end, new Sort(new SortField(sortField, type, desc)));            } else {                topFieldDocs = searcher.search(query, end, new Sort(SortField.FIELD_SCORE));            }            total = topFieldDocs.totalHits;


烂掉一塌糊涂 ,不在解释!~