如何在 Solr 中获取最后一个索引记录?

Posted

技术标签:

【中文标题】如何在 Solr 中获取最后一个索引记录?【英文标题】:How to get last indexed record in Solr? 【发布时间】:2012-09-02 23:57:12 【问题描述】:

我想知道如何在 Apache Solr 中获取/搜索最后的索引记录..?

当现有记录被更新时,它会走到所有记录的末尾...所以我想获取最后一条索引记录。

谢谢..

【问题讨论】:

【参考方案1】:

您可以在 Solr 架构中添加一个“时间戳”字段,以便在添加时将当前日期/时间放入记录中。

<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>

然后,对该字段进行降序排序,第一条记录将是最新的。像这样的查询应该这样做:-

http://localhost:8080/solr/core-name/select/q=*%3A*&start=0&rows=1&sort=timestamp+desc

【讨论】:

没有别的办法吗...?因为我必须在 Solr 索引中添加字段...感谢您的回复... 我相信这是最可靠的方法,因为时间戳字段将由 Solr 添加并保证准确。您可以使用@parvin 的答案,但这会假设您的 docid 字段是连续的并且可以排序。【参考方案2】:

您可以使用以下查询按索引顺序对文档进行排序。

http://localhost:8983/solr/select?q=*:*&sort=_docid_ asc

or 

http://localhost:8983/solr/select?q=*:*&sort=_docid_ desc

【讨论】:

谢谢,这正是我需要的。 依赖 docid 交叉合并是否安全?见osdir.com/ml/solr-user.lucene.apache.org/2011-12/msg01178.html 不要使用 docid 因为它会改变看到响应以理解 lucene.472066.n3.nabble.com/… 对我来说,这不是获得期望结果的最佳方式:q*:* 告诉 solr 搜索索引中的每条记录。就我而言,存储了超过 3000 万条记录,即使我添加了rows=1,响应也需要大约 10 秒才能返回。有没有获取最后一条记录的有效方法?

以上是关于如何在 Solr 中获取最后一个索引记录?的主要内容,如果未能解决你的问题,请参考以下文章

Solr 如何删除数组中除记录外的所有记录?

如何在 SOLR 中获取每个文档的总字数?

Solr安装(单机版)

如何在 Apache SolR 中索引 pdf/word 文档

如何使用Solr索引MySql数据库

如何在 SOLR 中索引 .html 文件