我需要在主索引过程中分别更新Solr索引中每个文档的几个字段。根据文档“Create”和“Update”映射到“Add()”函数。 http://code.google.com/p/solrnet/wiki/CRUD
因此,如果我添加一个已存在的文档,它会替换整个文档还是仅替换我指定的字段?
如果它将替换整个文档,那么我可以想到的唯一更新方法是按唯一ID搜索文档,更新文档对象,然后再次“添加”。由于需要更新操作的频率,这听起来不可行。有更好的更新方式吗?
谢谢!
答案 0 :(得分:4)
不幸的是,Solr目前不支持更新索引中给定文档的各个字段。您描述的后续场景检索整个文档内容(来自Solr或原始源),然后重新发送文档(通过SolrNet添加)是在Solr中更新文档的唯一方法。
请参阅上一个问题:Update specific field on Solr index,了解有关Solr不支持单个字段更新的详细信息以及向Solr添加此支持的开放JIRA问题。
答案 1 :(得分:1)
如果您需要经常更新SOLR中的大量文档,则可能需要重新考虑整个解决方案。在使用SOLR并且需要大量频繁更新文档的典型解决方案中,通常的方式是文档驻留在某些SQL或NoSQL数据库中,并在那里进行修改。然后使用DIH或类似的东西从数据库批量更新SOLR索引,可能只是删除索引并重新索引所有内容。 SOLR可以非常快速地索引文档,因此通常不是问题。
答案 2 :(得分:1)
现在,较新版本的Solr支持部分更新文档,例如4.10非常好。有关更多信息,请查看以下页面: https://cwiki.apache.org/confluence/display/solr/Updating+Parts+of+Documents
唯一的细节是你需要将你的字段声明为stored = true以允许部分更新。
我还将展示如何在此培训中完成此操作: http://www.pluralsight.com/courses/enterprise-search-using-apache-solr
在此特定模块中:内容:架构,文档和索引