當前位置:成語大全網 - 漢語詞典 - lucene是如何實現分類統計的?

lucene是如何實現分類統計的?

所謂分組統計,類似於sql中group by的功能。在solr中,這個功能被稱為刻面。Lucene本身不支持分組統計,但是可以使用fieldCache實現分組統計,也有不錯的性能。Solr還根據不同情況提供了其他方法(filterCache和UnInvertedField),後面會講到。

FieldCache是lucene用於排序的緩存。對於用於排序的字段,lucene將從索引中讀取該字段的值,並將其放入壹個大小為maxDoc的數組中。MaxDoc是lucene內部文檔的最大數量。有兩點需要註意:

fieldCache中的字段值是從倒排表中讀取的,而不是從索引文件中存儲的字段值中讀取的,因此排序後的字段必須設置為索引字段。

用於排序的字段在索引時不能進行標記化,因為在fieldCache數組中,每個文檔只對應壹個字段值,如果進行標記化,緩存中只會保存字典中較低的值。

Fieldcache是lucene占用內存最多的部分,大部分內存溢出錯誤都是由它引起的,需要特別註意。

使用fieldCache可以高效地實現分組統計。調用lucene進行查詢,通過讀取倒排表,進行布爾運算,得到壹組符合條件的文檔。分組統計的功能可以通過每個結果文檔號讀取fieldCache數組中的值,並將這些數字累加不同的值來實現。其中,如果壹個字段對應多個值,則在索引時不會進行拆分,然後從filedCache數組中讀取後進行拆分統計。