【问题标题】:Can lucene only sort and search for nothing?lucene只能排序和搜索吗?
【发布时间】:2012-05-04 12:39:49
【问题描述】:

我想按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 参数为空

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

btw:id 字段是 NumericField,使用:

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

【问题讨论】:

    标签: java search-engine lucene.net lucene


    【解决方案1】:

    您应该为此使用MatchAllDocsQuery

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 2016-07-30
      • 1970-01-01
      相关资源
      最近更新 更多