从动态字段中确定Solr构面名称

时间:2013-08-13 01:55:57

标签: solr lucene faceted-search

我在创建一个网络应用程序后,我将不得不使用动态字段来创建facet,smilimar到pricegrabber.com。

我不确定pricegrabber是否决定方面名称或发布者?我们如何确定在微波炉http://www.pricegrabber.com/appliances/microwave-ovens/p-528/和“等离子/液晶显示器”的“分辨率”方面会有“颜色”方面http://www.pricegrabber.com/electronics/plasma-lcd-televisions/p-197/

处理此类情况的最简单方法是什么?

1 个答案:

答案 0 :(得分:1)

这是一种方法。为每个产品分配一个类别,为每个类别分配一组属性。 (属性映射的类别可以存储在Solr之外的某个位置,例如,存储在DB中。)

属性是您的动态字段 - 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可以映射到category 1.当有人搜索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所做的。)当然,价格总是可用的,所以这是你可以随时用于所有搜索的一个方面。