如何在内部存储Solr的存储和索引字段(在Lucene中)

时间:2015-11-21 13:29:35

标签: solr bigdata search-engine solr4

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

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

这个问题的答案可能有助于我理解为什么Solr中的原子更新只适用于存储的字段而不是索引字段(如下所述:https://wiki.apache.org/solr/Atomic_Updates#Stored_Values)。

1 个答案:

答案 0 :(得分:4)

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

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

存储只是意味着它将被保存在存储的字段值部分中,而不是在反向索引中,这意味着它无法被搜索,但可以用于在您获得搜索结果文档时显示。

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