Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene SolrNet/Solr-更新与覆盖文档_Lucene_Solr_Solrnet - Fatal编程技术网

Lucene SolrNet/Solr-更新与覆盖文档

Lucene SolrNet/Solr-更新与覆盖文档,lucene,solr,solrnet,Lucene,Solr,Solrnet,我正在使用SolrNet与Solr索引进行交互。我有一个守护程序应用程序通过添加/更新/删除写入Solr索引。但是,对于SolrNet,具有相同唯一密钥的Add会覆盖(替换)现有文档,而不是附加(组合)它们 在Lucene中,我可以这样做,其中term是文档键的Lucene术语。我在SolrNet怎么做?我知道在一个方法中一个接一个地添加字段的(痛苦的)方法,但肯定有更简单的方法 //where term is a Lucene term for the document key if (obj

我正在使用SolrNet与Solr索引进行交互。我有一个守护程序应用程序通过添加/更新/删除写入Solr索引。但是,对于SolrNet,具有相同唯一密钥的Add会覆盖(替换)现有文档,而不是附加(组合)它们

在Lucene中,我可以这样做,其中term是文档键的Lucene术语。我在SolrNet怎么做?我知道在一个方法中一个接一个地添加字段的(痛苦的)方法,但肯定有更简单的方法

//where term is a Lucene term for the document key
if (objFacetsSearcher.DocFreq(term) > 0)
{
    objWriter.UpdateDocument(term, doc);
    updated++;
}
else
{
    objWriter.AddDocument(doc);
    added++;
}

据我所知,Solr还不支持这一点。请参阅。

可能与@Mauricio重复-不要认为这与我的问题有关。它完全相同。在Solr中,您不能更新单个字段。实际上,唯一的方法是读回文档、追加内容并写回?这似乎是一种对健康有害的I/O。你采取什么方法来解决这个问题?我正在考虑使用Lucene直接写入Solr索引。需要注意的任何缺点?@mikOS根据环境限制,最明显的方法是再次从源系统读取整个文档。如果这不是一个可行的选择,那么可以考虑在连接器中实现缓存功能(或者作为文档处理的一部分),或者将输入字段存储在索引中,并从SoR读取文档以填充DELTA之外的任何字段。您认为使用Lucene直接写入索引怎么样?有什么需要注意的潜在问题吗?