![](/img/trans.png)
[英]Term Document Frequencies in Java with Lucene/Lingpipe in a large corpus
[英]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.