1

私は、3.0 API を使用する「Lucene in Action」の第 2 版から作業を開始しました。著者は、次のメソッドで基本的な INdexWriter を作成します。

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 に答える