簡體   English   中英

獲取 Lucene 中的詞頻

[英]Get term frequencies in Lucene

是否有一種快速簡便的方法可以從 Lucene 索引中獲取術語頻率,而無需通過TermVectorFrequencies class 進行操作,因為對於大型 collections 來說這需要大量時間?

我的意思是,有沒有像TermEnum這樣的東西,它不僅有文檔頻率,還有詞頻?

更新:使用 TermDocs 太慢了。

使用TermDocs獲取給定文檔的詞頻。 與文檔頻率一樣,您可以使用感興趣的術語從IndexReader中獲取術語文檔。


您找不到比TermDocs更快的方法而不失一些一般性。 TermDocs直接從索引段中的“.frq”文件中讀取,其中每個詞頻按文檔順序列出。

如果這“太慢”,請確保您已優化索引以將多個段合並為一個段。 按順序遍歷文檔(跳過沒問題,但不能有效地在文檔列表中來回跳轉)。

您的下一步可能是進行額外處理以創建更專業的文件結構,從而SkipData 就我個人而言,我會尋找一種更好的算法來實現我的目標,或者提供更好的硬件——大量的 memory,或者保存一個RAMDirectory ,或者提供給操作系統以在其自己的文件緩存系統上使用。

Lucene 的主干版本(最終為 4.0)現在公開了來自 TermsEnum 的每個術語的 totalTermFreq()。 這是該術語在所有內容中出現的總次數(但與 docFreq 一樣,不考慮刪除)。

TermDocs在包含該術語的每個文檔中給出給定術語的 TF。 您可以通過遍歷每個 <document, frequency> 對並計算對數來獲得 DF,盡管 TermEnums 應該更快。 IndexReader有一個termDocs(Term) 方法,該方法返回給定 Term 和索引的 TermDocs。

暫無
暫無

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

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