lucene只能排序并搜索什么?

时间:2012-05-04 12:39:49

标签: java search-engine lucene.net lucene

我想按id DESC

列出最新的10行顺序
Sort sort = new Sort(new SortField[]{new SortField("id",SortField.INT,true)});
TopDocs topDocs=indexSearch.search(null,null,10,sort);//no need Query,only sort
...

我得到500异常,因为Query参数为null

如何以最佳方式实施?

btw:id字段是一个NumericField,使用:

new NumericField("id",Integer.MAX_VALUE,Field.Store.YES,true)

2 个答案:

答案 0 :(得分:3)

您应该使用MatchAllDocsQuery

Lucene Query是一个特殊的对象,它不仅是查询语义的规范,而且是每种特定查询类型的最有效执行策略的实现。这就是为什么即使对于这个“无操作”

也必须有一个特殊的查询

答案 1 :(得分:0)

顺便说一句:如果你想搜索最新的X行,你最好添加一个新的日期字段,将该文档添加到存储库的时间,而不是依赖于计数器(你的情况下为id)。 尝试思考如果更新现有文档或达到Integer.MAX_VALUE

会发生什么