gpt4 book ai didi

solr - lucene 字段与 DocValues

转载 作者:行者123 更新时间:2023-12-04 07:52:58 27 4
gpt4 key购买 nike

我正在使用和使用 Lucene 来索引我们的数据,我遇到了一些关于 DocValues 字段的奇怪行为。

所以,任何人都可以解释一下常规文档字段(如 StringField TextField IntField 等)和文档值字段之间的区别吗?
(如 IntDocValuesField SortedDocValuesField (类型在 Lucene 5.0 中似乎有变化)等)?

首先,为什么我不能使用 访问 DocValues document.get(fieldname) ?如果是这样,我如何访问它们?

其次,我已经看到在 Lucene 5.0 中一些特性发生了变化,例如排序只能在 DocValues 上完成......为什么会这样?

第三,DocValues 可以更新,但常规字段不能(您必须删除和添加整个文档)...

此外,也许最重要的是,我应该何时使用 DocValues,何时使用常规字段?

约瑟夫

最佳答案

大多数这些问题都可以通过引用 Solr Wiki 或网络搜索来快速回答,但要了解 DocValues 的要点:除了实际搜索之外,它们对与现代搜索服务相关的所有其他内容都很有用。来自 Solr Community Wiki :

DocValues are a way of recording field values internally that is more efficient for some purposes, such as sorting and faceting, than traditional indexing.

...

DocValue fields are now column-oriented fields with a document-to-value mapping built at index time. This approach promises to relieve some of the memory requirements of the fieldCache and make lookups for faceting, sorting, and grouping much faster.


这也应该回答为什么 Lucene 5 需要 DocValues 进行排序 - 它比以前的方法效率更高。
这样做的原因是 the storage format is turned around从为这些操作收集数据时的标准格式不同,应用程序以前必须遍历每个文档才能找到值,现在它可以查找值并找到相应的文档。当您已经有需要对其执行交集的文档列表时,这非常有用。
如果我没记错的话,更新基于 DocValue 的字段涉及从之前的标记列表中拉出文档,然后将其重新插入到新位置,与之前的方法相比,它会改变依赖项的负载(并且重新索引是唯一可行的策略)。
将 DocValues 用于需要上述任何属性的字段,例如排序/分面/等。

关于solr - lucene 字段与 DocValues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28960088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com