簡體   English   中英

solr 中的倒排索引和 docValues 有什么不同?

[英]What's different between inverted index and docValues in solr?

我在這里讀過很多文章。 我得出的結論是 index 用於搜索,而 docValue 用於排序、分面。 我很困惑 index 和 docValue 是否是相同的數據結構或相同的想法(存儲列值以獲取 doc id)? 如果不一樣,哪里不一樣?

倒排索引::

倒排索引是一個概念,用於構建搜索庫 Lucene。 Solr 構建索引的標准方式是使用倒排索引。 這種風格構建了在索引中所有文檔中找到的術語列表,每個術語旁邊是該術語出現的文檔列表(以及該術語在該文檔中出現的次數)。 這使得搜索速度非常快——由於用戶按術語搜索,因此擁有一個現成的術語到文檔值列表可以使查詢過程更快。 這就像通過掃描書后的索引來檢索與關鍵字相關的書中的頁面,而不是搜索書的每一頁的每個單詞。 這種類型的索引稱為倒排索引,因為它將以頁面為中心的數據結構(page->words)反轉為以關鍵字為中心的數據結構(word->pages)。 Solr 將此索引存儲在數據目錄中名為 index 的目錄中。

文檔值::

對於我們現在通常與搜索相關聯的其他功能,例如排序、分面和突出顯示,這種方法效率不高。 例如,構面引擎必須查找每個文檔中出現的每個術語,這些詞將構成結果集並提取文檔 ID 以構建構面列表。 在 Solr 中,這是在 memory 中維護的,加載速度可能很慢(取決於文檔數量、術語等)。

在 Lucene 4.0 中,引入了一種新方法。 DocValue 字段現在是面向列的字段,具有在索引時構建的文檔到值的映射。 這種方法有望減輕 fieldCache 的一些 memory 要求,並使分面、排序和分組的查找速度更快。

對於 docValues,您只需為您將使用它的字段啟用它。 與所有模式設計一樣,您需要定義字段類型,然后在啟用 docValues 的情況下定義該類型的字段。 為 docValues 啟用字段只需要將 docValues="true" 添加到該字段。 DocValues 僅適用於特定的字段類型。

<field name="category" type="string" indexed="false" stored="false" docValues="true" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM