我们需要更新Solr 4的索引,但是会得到一些意想不到的结果。我们运行一个C#程序,使用SolrNet来执行AddRange()。在此过程中,我们将添加新文档并尝试更新现有文档。
我们注意到某些记录的字段会使用最新数据进行更新,而其他记录仍会显示旧信息。我们是否应该使用in the documentation指示的信息?
文档表明我们可以在该字段上设置update="set|add|inc"
。如果我们希望更新现有记录,我们应该使用set
吗?另外,当我们删除一个字段,要删除它时,我们是否需要关闭Solr并重新启动?或者设置null="true"
?
您能否向我们提供有关更新Solr数据的一些有用信息?谢谢。
答案 0 :(得分:4)
您列出的文档参考描述了Solr 4中Atomic Updates的参数,SolrNet目前不支持这些参数 - 有关详细信息,请参阅issue 199。
在SolrNet中添加此支持之前,更新索引中文档的唯一选择是重新发送整个文档(C#中的对象),并适当设置所需的更新/删除的字段。在内部,Solr将使用更新的字段将文档重新添加到索引中。
此外,在索引中添加/更新文档时,在发出提交之前,对索引的查询将不会显示这些更改。我建议使用AddParameters的CommitWithin
选项允许Solr在内部处理此问题,SolrWiki - CommitWithin中对此进行了详细介绍。