2012-05-13 55 views
1

我開始通過「Lucene的行動」,它使用3.0 API的第二版工作我的方式,筆者創建具有下列方法設置的Lucene的IndexWriter最大領域

private IndexWriter getIndexWriter() throws CorruptIndexException, LockObtainFailedException, IOException { 
    return new IndexWriter(directory, new WhitespaceAnalyzer(), IndexWriter.MaxFieldLength.Unlimited); 
    } 

一個基本的IndexWriter在代碼下面我根據當前的API進行了更改,除了我無法弄清楚如何將書寫器的最大字段長度設置爲像書中示例中的常量那樣無限。我剛剛插入下面的int 1000。這個無限的常量在當前的API中完全消失了嗎?

private IndexWriter getIndexWriter() throws CorruptIndexException, LockObtainFailedException, IOException { 
     IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_36, 
       new LimitTokenCountAnalyzer(new WhitespaceAnalyzer(Version.LUCENE_36), 1000)); 
     return new IndexWriter(directory, iwc); 
    } 

謝謝,這只是爲了好奇。

回答

3

IndexWriter的javadoc說:

@Deprecated使用LimitTokenCountAnalyzer來代替。請注意,behvaior會略有變化 - 分析器會限制每個令牌流創建的令牌數 ,而此設置會將標記的總數限制爲索引。這隻在索引 許多多值字段時才重要。

因此,換句話說,硬連線方法已被替換爲一個很好的適配器/委託模式。

+0

謝謝,花了幾個閱讀javadoc沉入 – awfulHack