これはそれを行う1つの方法です。各製品にカテゴリを割り当て、各カテゴリに一連のプロパティを割り当てます。(カテゴリからプロパティへのマッピングは、DB など、Solr の外部のどこかに保存できます。)
プロパティは動的フィールドです -property_*
以下。例えば:
{
product_name: Brand A 3 Cu. ft. microwave,
category: 1,
price: 45.35,
property_color: Red,
property_capacity_cu_ft: 3,
property_brand: Brand A
},
{
product_name: Brand B 45 inch plasma TV,
category: 2,
price: 4500.35,
property_resolution: 1920 x 1200,
property_aspect_ratio: Widescreen,
property_brand: Brand B
}
また、自動提案キーワードのそれぞれにカテゴリを割り当てます。たとえば、 1microwave oven
にマッピングできますcategory
。誰かがあなたを検索するmicrowave oven
と、それが属するカテゴリのプロパティが取り込まれます。
color
capacity_cu_ft
brand
次のようなクエリを作成します。
q=microwave%20oven&facet=true&facet.query=property_color&facet.query=property_capacity_cu_ft&facet.query=property_brand
(ここでは、capacity_cu_ft のファセットを範囲指定することもできます。)
ユーザーが自動提案辞書にない用語を検索した場合、最善の策は、実際にカテゴリ自体をファセットすることです。(これが pricegrabber の機能だと思います。) もちろん、price は常に利用できるので、すべての検索でいつでも使用できるファセットです。