排序的关键点有两个:
1:首先你要排序的字段必须是被index的,并且是untokenized的。
如:
2:在检索时候:
如:
/***** 排序 *****/
/*
* 1.被排序的字段必须被索引过(Indexecd),在索引时不能 用 Field.Index.TOKENIZED
* (用UN_TOKENIZED可以正常实现.用NO时查询正常,但排序不能正常设置升降序)
* 2.SortField类型
* SCORE、DOC、AUTO、STRING、INT、FLOAT、CUSTOM 此类型主要是根据字段的类型选择
* 3.SortField的第三个参数代表是否是降序true:降序 false:升序
*/
Sort sort = new Sort(new SortField[]{new SortField("time", SortField.INT, true)});
Hits hits = searcher.search(querystring,sort);
/*
* 按日期排序
*/
Sort sort = new Sort(new SortField[]{new SortField("createTime", SortField.INT, false)});
/***** 过滤器 ******/
QueryParser qp1 = new QueryParser("content",analyzer);
Query fquery = qp1.parse("我");
BooleanQuery bqf = new BooleanQuery();
bqf.add(fquery,BooleanClause.Occur.SHOULD);
QueryFilter qf = new QueryFilter(bqf);
Hits hits = searcher.search(query);