1

I am after creating a web app where I would have to use dynamic fields to create facets, smilimar to pricegrabber.com.

I am not sure if pricegrabber decides the facet names or publishers ? How do we decide there will be a "Color" facet in case of microwave http://www.pricegrabber.com/appliances/microwave-ovens/p-528/ and a "resolution" facet in case of plasma/LCD http://www.pricegrabber.com/electronics/plasma-lcd-televisions/p-197/

What's the easiest way to handle such situations?

4

1 回答 1

1

这是一种方法。为每个产品分配一个类别,为每个类别分配一组属性。(类别到属性的映射可以存储在 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
}

此外,为您的每个自动建议关键字分配一个类别。例如,microwave oven可以映射到category1。当有人搜索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 所做的。)当然,价格总是可用的,所以这是您可以在所有搜索中始终使用的一个方面。

于 2013-08-13T05:53:51.110 回答