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

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

目前的设置如下:
每当在SQL中调用某个sproc时,它就会将消息放入队列中.此队列上有一个侦听器,它启动一个程序,该程序读取队列并调用其他sprocs.完成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

点赞