Solr lucene服务器不发布提交消息

问题描述

我们有一个名为\“ server \”的CommonsHttpSolrserver变量,它正在执行server.add(...)并带有格式正确的SolrInputDocument,上面带有几个字段(id和accountNumber)。我们的文档未显示在Solr存储库中。当我们复制Solr演示工具SimplePostTool(手动格式化HTTP帖子)的源代码时,Solr服务器已更新。当我们比较两个帖子之间的差异时,我们发现SimplePostTool代码正在发送包含以下内容的后续帖子:
<commit/>
即使我们有server.commit(),当直接与CommonsHttpSolrserver进行交互时,也不会将任何提交标签发布到我们的Solr服务器上。我们还在以下位置尝试了该解决方案 http://www.mail-archive.com/[email protected]/msg12289.html 尝试导致将提交发布到Solr服务器,但仍然没有提交出现。当我们执行server.add(...)并运行SimplePostTool时,SimplePostTool提供的提交成功导致所有未决的Solr更新被提交。 我们的问题是如何使用CommonsHttpSolrserver强制将提交发布到Solr服务器,而不是一起破解原始HTTP发布。 我们正在使用solr-core 3.1.0 谢谢! 这是有问题的代码,它是通过Spring配置的Groovy代码,如果您愿意,我可以提出一个不同的示例。
//message queue listener receives an ImagingMessage
class ImagingProcessor {
  Solrserver server
  void process(ImagingMessage message) {
    server.add(DocumentFactory.createDocument(message.indexedFields,message.file))
    server.commit()
        //also tried http://www.mail-archive.com/[email protected]/msg12289.html 
        //and varios flavors of .commit(boolean,boolean)
  }
}

class ImagingMessage {
  List<IndexedField> indexedFields
  byte[] file
}

class DocumentFactory {
  static SolrInputDocument createDocument(List<IndexedField> indexedFields,byte[] file) {
    SolrInputDocument solrInputDocument = new SolrInputDocument()
    indexedFields.each {
      solrInputDocument.addField it.name,it.value
    }
    solrInputDocument.addField \"content\",file
    println solrInputDocument.toString()
    solrInputDocument
  }
}
我们没有使用server.commit()来运行基于SimplePostTool的解决方案,该解决方案发布了标签,但这只是一个丑陋的临时hack。 我们并不是真的想为每条消息提交(就像在这里的秒杀/演示代码中那样),但是我们确实需要偶尔进行提交,例如按计划进行提交,否则我们会将其填充到lucene存储中的尾端将不会显示。     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)