「car」の親である「car_dealer」という 2 つのデータ型があります。車種のドキュメントは、「ブランド」と「モデル」の 2 つのフィールドを含むインデックスが作成されます。これら 2 つのフィールドでは、ピボット ファセットを使用します。
サイトの訪問者は、車と車のディーラーの両方を検索できる必要があります。車のデータ (子) を照合することで、車のディーラー (親) を見つけることができます。これには参加が必要ですが、幸いなことにsolr 4はそれをサポートしています。「cars」を「car_dealers」と結合するには、車のタイプのドキュメントに「dealer」というフィールドを追加します。これは、車が属するディーラー ID を保持し、すべてのドキュメントが持つ「id」フィールドとこれを結合します.
次のクエリを思いつきました (無関係なフィールドを除外しています)。
車検索:
q={!dismax v=$values qf=$fields}&values=porsche&fields=title^10 body^10&facet=true&facet.pivot=brand,model
(ファセットは正しく機能します)
カーディーラー検索:
q={!join from=dealer to=id defType=dismax v=$values qf=$fields}&values=porsche&fields=title^10 body^10&facet=true&facet.pivot=brand,model
この最後のクエリは自動車ディーラーを表示しますが、car_dealer-type のドキュメントにはブランドやモデルが含まれていないため、ファセットは機能しません。
カーディーラーの検索でもファセットを返すにはどうすればよいですか? 人々がブランドとモデルでディーラーをフィルタリングできるように.
facet.pivot をローカル パラメータとして逆結合しようとしましたが、うまくいきませんでした:
facet.pivot={!join from=id to=dealer}brand,model
ローカル パラメータをファセットに追加することさえ可能かどうかはわかりません。見つけたすべてのドキュメントを読みましたが、この特定のシナリオについては何も言及されていません。
正しい方向へのプッシュは非常に高く評価されます:)