簡體   English   中英

Lucene 4.0示例代碼

[英]Lucene 4.0 sample code

我不能讓它與Lucene 4.0及其新功能一起使用...有人可以幫助我嗎?

我已經從網上抓取了一堆html文檔。 現在,我想計算每個文檔中不同單詞的數量。

這就是我使用Lucene 3.5所做的(對於單個文檔。為了得到所有文檔,我每次使用一個僅包含一個文檔的新RAMDirectory遍歷所有文檔...):

Analyzer analyzer = some Lucene Analyzer;
RAMDirectory index;
index = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35, analyzer);
String _words = new String();
// get somehow the String containing a certain text:
_words = doc.getPageDescription();  

try {
   IndexWriter w = new IndexWriter(index, config);
   addDoc(w, _words);
   w.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
   e.printStackTrace();
 }
try {
 // System.out.print(", count Terms...  ");
 IndexReader reader = IndexReader.open(index);
 TermFreqVector[] freqVector = reader.getTermFreqVectors(0);
 if (freqVector == null) {
 System.out.println("Count words:  ": 0"); 
 }
 for (TermFreqVector vector : freqVector) {
String[] terms = vector.getTerms();
int[] freq = vector.getTermFrequencies();
int n = terms.length;
System.out.println("Count words: " + n);
  ....

如何使用Lucene 4.0做到這一點?

我更願意使用FSDirectory而不是RAMDirectory來做到這一點。 如果我有很多文件,我想這會更有效?

感謝和問候C.

使用字段/術語API。

尤其請參見示例“特定文檔的訪問詞向量字段”

看到您正在遍歷所有文檔時,如果最終目標確實像所有文檔中唯一術語的平均數量一樣,請繼續閱讀“索引統計信息”部分。 例如,在這種情況下,您可以使用#postings / #documents有效地進行計算:getSumDocFreq()/ maxDoc()

http://lucene.apache.org/core/4_0_0/core/org/apache/lucene/index/package-summary.html#package_description

暫無
暫無

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

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