2012-05-13 56 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