2013-04-29 9 views
5

私はsolrクエリを実行し、私が定義したuniquKeyだけを取得したいと思います。
ドキュメントが非常に大きいので、fl = 'my_key'の定義が十分に速いわけではありません。一致するすべてのドキュメントがスキャンされ、クエリに時間がかかることがあります(検索自体は高速ですが、numFoundには数秒かかります)。
すべてのデータが保存され、新しいインデックスを作成することはオプションではないことに言及する必要があります。solr query-ファイルをスキャンせずに結果を取得

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

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

おかげで、

DAFNA

+0

私は非常によく似た問題を抱えています!しかし、それを釘付けする方法を見つけることができませんでした。私は誰かがこれでより良い経験を持っていることを願っています... – Yonatan

+0

検索が遅いのはなぜですか?それは巨大なインデックスサイズですか?複数のフィールドを検索するクエリ? – Jayendra

答えて

0

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

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

関連する問題