在Solr中,当我将字段设置为“已编入索引”但未“存储”时,它仍存储在索引中。如果我反过来将字段设置为“存储”而不是“索引”,如果我理解正确,它也会存储在索引中。
我的问题是,在这些情况下,文档如何存储在Lucene内部? “存储”字段在Lucene中是如何形成的,以及“索引”字段在内部如何在Lucene中显示。
这个问题的答案可能有助于我理解为什么Solr中的原子更新只适用于存储的字段而不是索引字段(如下所述:https://wiki.apache.org/solr/Atomic_Updates#Stored_Values)。
答案 0 :(得分:4)
在Solr / Lucene中,索引和存储是两个不同的概念。
索引表示字段值将保存在反向索引中,您可以在进行查询时搜索它们。但是你无法在搜索结果文档中看到它们。
存储只是意味着它将被保存在存储的字段值部分中,而不是在反向索引中,这意味着它无法被搜索,但可以用于在您获得搜索结果文档时显示。
实际上,Solr的更新方式是,它将取出整个文档(仅存储的字段),更改要更新的值,然后将其保存回来(使用重新索引)。这就是为什么它只能支持存储的字段。