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
Solr';s内部存储的存储字段和索引字段(在Lucene中)_Solr_Bigdata_Search Engine_Solr4 - Fatal编程技术网

Solr';s内部存储的存储字段和索引字段(在Lucene中)

Solr';s内部存储的存储字段和索引字段(在Lucene中),solr,bigdata,search-engine,solr4,Solr,Bigdata,Search Engine,Solr4,在Solr中,当我将字段设置为“索引”而不是“存储”时,它仍然存储在索引中。如果我反过来将字段设置为“存储”而不是“索引”,如果我理解正确,它也会存储在索引中 我的问题是,在这些情况下,文档如何存储在Lucene内部?“存储”字段在Lucene中的外观如何,以及“索引”字段在Lucene内部的外观如何 这个问题的答案可能会帮助我理解为什么Solr中的原子更新只适用于存储字段而不适用于索引字段(如下所述:)。在Solr/Lucene中,索引的和存储的是两个不同的概念 索引表示字段值将保存在反向索引

在Solr中,当我将字段设置为“索引”而不是“存储”时,它仍然存储在索引中。如果我反过来将字段设置为“存储”而不是“索引”,如果我理解正确,它也会存储在索引中

我的问题是,在这些情况下,文档如何存储在Lucene内部?“存储”字段在Lucene中的外观如何,以及“索引”字段在Lucene内部的外观如何


这个问题的答案可能会帮助我理解为什么Solr中的原子更新只适用于存储字段而不适用于索引字段(如下所述:)。

在Solr/Lucene中,索引的存储的是两个不同的概念

索引表示字段值将保存在反向索引中,您可以在进行查询时对其进行搜索。但在搜索结果文档中看不到它们

存储只意味着它将保存在存储字段值部分,而不是倒排索引中,这意味着它不能被搜索,但可以用于在获取搜索结果文档时显示


实际上,SolrDo更新的方式是,它将取出整个文档(仅存储字段),更改要更新的值,然后将它们保存回(使用重新索引)。这就是为什么它只能支持存储的字段。

为了进一步扩展这个,在字段中考虑值“这个值是一个值”的值。索引将只包含从“this”、“is”、“a”和“value”到内部docId的引用。不可能从中重新创建原始值(这是一种简化,除了docId之外,还有其他附加到令牌的值,例如frequency(“termFreq”))。请参阅Lucene文档)谢谢Zhitao!:)你们说的“存储只是意味着它将保存在文档值部分,而不是倒排索引中”。您能告诉我更多关于这个“文档值部分”的信息吗?也许您可以指向一些文档?对不起,我混淆了存储字段值和文档值。他们是不同的。存储的字段值仅用于返回原始字段值,因为有时原始值与索引值不同,例如在经过标记器之后。和Mats说的一样。文档值是另一个东西,也由文档编号键入,但用于刻面或其他功能。请参阅进一步扩展:Solr不能像sql数据库那样更新单个字段。“内部Solr使用更新的字段将完整文档重新添加到索引中。”谢谢@ZhitaoYue。你能告诉我那些被“存储”但没有被“索引”的字段实际存储在哪里吗?如果它们没有存储在“反向索引”中,那么它们存储在哪里?