1

Lucene 内のインデックス作成とクエリのパフォーマンスに関して、SO だけでなく Web にもいくつかのトピックがあることは知っていますが、ペイロードの作成がクエリに影響を与えるかどうか (もしそうなら、どのくらい影響するか) について議論するトピックをまだ見つけていません。パフォーマンス...

これがシナリオです...

ドキュメントのコレクション (100K から 10M の範囲) にインデックスを付けたいとします。各ドキュメントには、個別に検索できるようにするサブセクションがあります (または、そのセクション内で一致が見つかったかどうかに応じて、上位にランク付けすることもできます)。 .

そのサブセクション内に表示される任意の用語に (インデックス作成中に) ペイロードを追加することを検討しているため、クエリ時にその決定を効率的に行うことができます。

ペイロードの使用に関連するパフォーマンスの問題を知っている人はいますか? あるいは、このトピックに関するオンライン ドキュメントを教えてもらえますか?

ありがとう!

編集:私のシナリオの代替ソリューションに感謝しますが、将来ペイロードを使用する必要がある場合に備えて、クエリのパフォーマンスに関する元の質問に関してコメントはありますか?

4

2 に答える 2

1

やりたいことに対する教科書的な解決策は、各元のドキュメントを 2 つのフィールドとしてインデックス化することです。1 つは完全なドキュメント用で、もう 1 つはサブセクション用です。サブセクション フィールドは、インデックス作成中または取得中に個別にブーストできます。そうは言っても、Lucene ペイロードについては、 Getting Started with Payloadsで読むことができます。

于 2009-09-16T06:32:48.827 に答える
0

あなたのユースケースはペイロードの目的にうまく適合しません.ペイロード情報は冗長であるように見えます.

ペイロードは、ドキュメントと用語のペアではなく、ドキュメント内の用語の個々の発生に関連付けられます。ペイロードを保存してアクセスするには、ドキュメント内の用語出現のオフセットを使用する必要があります。あなたの場合、オフセットがわかっている場合は、ペイロードデータを使用せずに、用語の出現がどのセクションにあるかを計算できるはずです。

より広い問題は、パフォーマンスに対するペイロードの影響です。私の経験では、適切に使用すると、ペイロードの実装が占有するスペースが少なくなり、以前に使用していた回避策よりも高速になりました。ディスク領域への最大の影響は、現在 Field.setOmitTermFreqAndPositions(true) を使用してインデックス サイズを削減している場所です。ペイロードを使用するには位置を含める必要があるため、インデックスが大きくなる可能性があります。

于 2010-12-17T12:36:17.643 に答える