0

Lucene を使用して Android で辞書アプリを作成しています。インデックス作成時と検索時に同じインスタンスを提供する必要がありStandardAnalyzerますか? それとも両方に新しいインスタンスを提供するだけでよいですか?

たとえば、インデックスを作成しようとしているときは、次のようにします。

Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);
IndexWriter writer = new IndexWriter(directory,
                    new IndexWriterConfig(Version.LUCENE_36, analyzer));

そして、上位のドキュメントで検索語の最適なフラグメントを取得したら、次のようにします。

TokenStream ts = TokenSources.getAnyTokenStream(indexSearcher.getIndexReader(),
                    hits[i].doc, "definition", analyzer);

analyzerまたは、すべての使用法をに置き換えることはできnew StandardAnalyzer(Version.LUCENE_36)ますか? 私のインデックス作成と検索タスクは異なるクラスにあり、インスタンス間で渡すオブジェクトの最小数を維持したいので、私はこれを求めています。

4

1 に答える 1

0

同じアナライザー/トークンライザーの異なるインスタンスを確実に使用できます。

唯一の要件は、検索およびインデックス作成中にそれらがまったく同じように動作することを確認することです(たとえば、同じオブジェクトコンストラクターを使用する必要があり、同じレベルのデータアクセスを持つ必要があります)。

于 2012-11-26T10:18:06.810 に答える