Solr 4.0+ を使用。Stores と Products の間に SQL の親子関係があります。「店名、住所、または市区町村が「xxx」に一致するすべての店舗を検索する」というクエリを作成します。または、「xxx」に一致する製品が店舗に含まれている場所を検索します。場所で見つかったすべての製品に対して ^y でブーストします。次に、スコアの降順に並べます」
インデックス作成用に作成するドキュメントは次のようになります。
<doc>
<field name="id">22</field>
<field name="locationname">Store 1</field>
<field name="locationaddress">1 Main St</field>
<field name="locationcity">Oakland</field>
<field name="loc">37.842023000000,-122.251423000000</field>
<field name="product">Product Name 1</field>
</doc>
<doc>
<field name="id">22</field>
<field name="locationname">Store 1</field>
<field name="locationaddress">1 Main St</field>
<field name="locationcity">Oakland</field>
<field name="loc">37.842023000000,-122.251423000000</field>
<field name="product">Product Name 2</field>
</doc>
基本的なクエリを出発点として使用する:
http://localhost:8983/solr/collection1/select?q=xxx&fl=id, locationname, score&group=true&group.field=locationname&sort=score desc&qf=numFound^5
ブーストまたはフィルター クエリの一部として numFound を使用する方法はありますか? あなたのクエリには、この返されたプロパティへのアクセス権がないようです。唯一の選択肢は、インデックス作成のためにデータを再構築するか、グループ化された結果を中間層アプリケーションに取り込み、そこでスコアリング ロジックを適用することでしょうか?