solr - 导入操作完成后获取添加文档的ID

标签 solr dataimporthandler

我正在尝试设置 Solr dataimport.EventListener 以使用已添加到更新事件中的文档的 ID 来调用 SOAP 服务。我有一个实现 org.apache.solr.handler.dataimport.EventListener 的类,我认为 getAllEntityFields() 的结果会产生文档 ID 的集合。不幸的是,该方法的结果产生了一个空列表。更令人困惑的是 context.getSolrCore().getName() 产生一个空字符串而不是实际的核心名称。所以看起来我在这里不太正确。

当前设置如下:
每当在 SQL 中调用某个 sproc 时,它都会将一条消息放入队列中。这个队列有一个监听器,它启动一个读取队列并调用其他 sproc 的程序。 sprocs 完成后,在 Solr 上执行增量或完全导入操作。紧接着,调用一个方法来更新缓存。但是,因为在调用此更新方法之前 Solr 上的导入操作可能尚未完成,所以缓存可能会更新为“陈旧”数据。

我希望使用 dataimport EventListener 来调用更新缓存的方法,因为我的其他选项似乎太复杂了(例如,轮询 dataimport URL 以确定何时调用更新方法或使用队列列出需要更新的文档 ID更新并让 EventListener 调用服务上的方法以接收此队列并更新缓存)。我很难找到文档或示例。有没有人对我应该如何解决这个问题有任何想法?

最佳答案

据我了解,您正在尝试在添加文档时更新缓存。根据您运行的 solr 版本,您可以执行以下操作之一。

Solr 4.0 提供了允许您执行此操作的脚本转换器。
http://wiki.apache.org/solr/DataImportHandler#ScriptTransformer

使用之前版本的 solr,您可以将一个处理程序链接到另一个处理程序之上,如下文所述。
Solr and custom update handler

关于solr - 导入操作完成后获取添加文档的ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13632993/

相关文章:

java - SOLR部分索引的最佳实践,以便更新Hybris中频繁更改的属性

hadoop - Solr HBase 搜索引擎

ruby-on-rails - 从 Solr 查询中删除 Sunspot 的 fq 参数

solr - 将多个文件发送到solr

java - 提升一个领域的相关性,与另一个领域的值(value)(数字​​)

Solr 4.1 DataImportHandler ClassNotFoundException

Solr 数据导入处理程序 : Can I get a dynamic field name from xml attribute with XPathEntityProcessor?

mysql - Solr DataImport 编码

solr - java.lang.NoSuchMethodError : org. apache.solr.core.SolrCore.getSchema() 错误

mysql - 如何使用 Solr 数据导入处理程序来索引 MySQL 表?