5

solr クエリを実行して、定義した uniquKey のみを取得したいと考えています。
ドキュメントは非常に大きいため、 fl='my_key' を定義しても十分な速度ではありません。一致するすべてのドキュメントが引き続きスキャンされ、クエリに数時間かかる場合があります (検索自体は高速でしたが、numFound が返されるのに数秒かかります)。
すべてのデータが保存されており、新しいインデックスを作成することはできません。

私が思いついたアイデアの 1 つは、結果の docIds を取得し、それらをコード内の my_key にマップすることでした。
この情報を取得するためにスキャンする必要はないと考えて fl=[docid] を使用しましたが、それでも返るのに時間がかかりすぎます。

docIds を取得するより良い方法はありますか?
または、インデックスを再作成せずに特定のフィールドをアンストアする方法はありますか?
それとも、すべてのフィールドをスキャンせずに結果を取得するための完全に異なる方法でしょうか?

ありがとう、

ダフナ

4

1 に答える 1

0

申し訳ありませんが、唯一の方法は、巨大なドキュメントを複数に分割することです。指定したフィールドのみを一致させ、ドキュメントを放っておくことがどのように可能になるかわかりません。これは Lucene の仕組みではありません。

ジョブを簡単にするためにクエリに必要なインデックス付きフィールドのみを使用するドキュメントを作成したり、必要なクエリに基づいてドキュメントを分割したりすることができます。または、これらの新しいクエリに必要な構造を持つ別のドキュメントを追加するだけです。それはあなた次第です。

于 2013-07-03T10:34:25.863 に答える