過去にsolrを使用したことがありますが、ほとんどの場合、検索は簡単でした。「AND」で結果を制限できる検索が必要な状況になりました...次の例を使用します。
ドキュメント 1 --> StudentID:123 ClassID: 001
ドキュメント 2 --> StudentID:123 ClassID:002
ドキュメント 3 --> StudentID:987 ClassID:001
目的のクエリの「英語」バージョンは、「classID:001 および ClassID:002 のクラスのすべての生徒を教えてください。これは StudentID:123 のみを返し、Student:987 を除外します。
確かに、私たちの実際のクエリは、この b/c よりもはるかに複雑です。クラスは、時間、日などの他のプロパティも持つことができます。しかし、最初に基本的な「AND」フィルタリングを達成するのに役立つかどうかを確認したかったのです。
これが現在の実装方法であり、機能しているように見えますが、クラスの数は動的になる可能性があるため、mincount を動的に更新する必要があることを意味します。それを行うための「より良い」方法があるかどうかに興味があります。
q=*:*&fq=(ClassID:001)OR(ClassID:002)&rows=0&group=true&group.field=ClassID&group.facet=true&group.ngroups=true&facet=true&facet.field=ClassID&facet.mincount=2&facet.field=StudentID
まだ見つけていない簡単な方法があると確信しているので、質問は専門家に任せています。助けていただければ幸いです。