1

我想按idDESC列出最新的 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 参数为空

我怎样才能以最好的方式实施它?

顺便说一句:id字段是一个 NumericField,使用以下方式编写:

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

2 回答 2

3

你应该使用MatchAllDocsQuery它。

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

于 2012-05-04T12:41:06.783 回答
0

顺便说一句:如果您想搜索最新的 X 行,最好添加一个新的日期字段,其中包含此文档添加到存储库的时间,而不是依赖计数器(您的案例中的 ID)。试着想想如果你更新一个现有的文档或者你达到 Integer.MAX_VALUE 会发生什么

于 2012-05-04T12:48:07.093 回答