0

私はこの質問を見てきました - luceneで多言語の単語を索引付けすると、私の疑念のいくつかが確認されました。

インデックスを作成したい多数のフィールドを持つエンティティがあります。これらのフィールドの 1 つは複数の言語のいずれかである可能性があり、言語ごとに異なるアナライザーを使用する必要があります。

これを同じインデックスの異なるフィールドとして実装するか、言語ごとに異なるインデックスとして実装するのが最善ですか?

トレードオフは、複数のインデックスを実行するオーバーヘッドと、単一のインデックスを乱雑にすることの厄介さとの間であると推測しています。

アドバイスをいただければ幸いです。

4

1 に答える 1

2

あなたが言及しなかったもう1つのアイデア:各言語を非保存、非インデックスフィールドにすることができます。次に、すべての (分析された) データを単一の格納されたインデックス付きフィールドにコピーすると、単一のフィールドを検索しているかのように動作します。(これは、Solr の「フィールドのコピー」に似ています。休止状態で行うのがどれほど難しいかはわかりません。)

それらを別々のインデックスに保持すると、複数の言語を簡単に検索できないことに注意してください (または、ほぼ間違いなく、まったく検索できません)。したがって、「english:foo dutch:foo」のようなクエリを許可したい場合は、同じインデックスにそれらが必要になります。

パフォーマンスの観点からは、共有されるデータの量によって異なります。ドキュメントがばらばらである場合 (つまり、ドキュメントに 2 つの言語が含まれていない場合)、インデックスが 1 つにある場合と 2 つある場合の違いはあまりないでしょう。共有するデータが多ければ多いほど、Lucene が複製するメモリも増えるため、インデックスは 1 つにしたほうがよいでしょう。私の推測では、これは多くのデータが保存されている場合にのみ問題になると思いますが、YMMV.

于 2011-03-21T15:06:00.937 に答える