簡體   English   中英

Lucene:迭代所有條目

[英]Lucene: Iterate all entries

我有一個Lucene索引,我想對其進行迭代(在開​​發的當前階段進行一次評估),我有4個文檔,每個文檔有數十萬至上百萬個條目,我希望對其進行迭代以計算單詞數每個條目(〜2-10)並計算頻率分布。

我目前正在做的是:

   for (int i = 0; i < reader.maxDoc(); i++) {
                    if (reader.isDeleted(i))
                        continue;

                    Document doc = reader.document(i);
                Field text = doc.getField("myDocName#1");

                String content = text.stringValue();


                int wordLen = countNumberOfWords(content);
//store
}

到目前為止,它正在迭代某些東西。 調試確認它至少可以對文檔中存儲的術語進行操作,但是由於某種原因,它僅處理一小部分存儲的術語。 我想知道我做錯了什么嗎? 我只是想遍歷所有文檔以及其中存儲的所有內容?

首先,您需要確保啟用TermVectors進行索引

doc.add(new Field(TITLE, page.getTitle(), Field.Store.YES, Field.Index.ANALYZED, TermVector.WITH_POSITIONS_OFFSETS));

然后,您可以使用IndexReader.getTermFreqVector來計數術語

TopDocs res = indexSearcher.search(YOUR_QUERY, null, 1000);

// iterate over documents in res, ommited for brevity

reader.getTermFreqVector(res.scoreDocs[i].doc, YOUR_FIELD, new TermVectorMapper() {
            public void map(String termval, int freq, TermVectorOffsetInfo[] offsets, int[] positions) {
                // increment frequency count of termval by freq
                freqs.increment(termval, freq);
            }

            public void setExpectations(String arg0, int arg1,boolean arg2, boolean arg3) {}
});

暫無
暫無

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

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