1

我开始通过使用 3.0 API 的“Lucene in Action”的第二版进行工作,作者使用以下方法创建了一个基本的索引编写器

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

在下面的代码中,我根据当前的 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);
    }

谢谢,这只是为了好奇。

4

1 回答 1

3

IndexWriterjavadoc 说:

@deprecated 改为使用LimitTokenCountAnalyzer。请注意,行为略有变化 - 分析器限制每个创建的令牌流的令牌数量,而此设置限制要索引的令牌总数。不过,这仅在您索引许多多值字段时才重要。

因此,换句话说,硬连线的方法已被漂亮的适配器/委托模式所取代。

于 2012-05-14T11:25:45.363 回答