用于分面搜索的Solr Schema.xml

时间:2012-06-12 13:42:44

标签: solr e-commerce solrnet faceted-search

我们正在通过电子商务应用程序实施solr。主要目标是更快的搜索和更好的分面目录导航。

问题是,我们无法弄清楚如何将动态方面映射到Solr。当我说动态方面时,我的意思是......

三星Galaxy S3

  • 类别:智能手机
  • 品牌:三星
  • 操作系统:Android
  • RAM:1 GB
  • 处理器:1 Ghz
  • 相机:8MP
  • 显示:4.7英寸
  • 并且喜欢..

过滤条件,如操作系统,内存,处理器,相机等,对于每个产品都是动态的,有些拥有它,有些则具有完全不同的过滤条件。因此,当有人点击Android时,将使用所选类别中的所有Android手机过滤结果。

我们面临的一个问题是,我们无法确定solr schema.xml对支持分面搜索的这种数据字典的看法。

2 个答案:

答案 0 :(得分:4)

动态字段是您所需要的。

你甚至可以这样做:

product_name : samsung nexus
android_version_t : 4.0
partner_store_price_i : 19800

如果以这种方式设置架构,_t_i后缀将被理解为文本和整数类型。

<dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>
<dynamicField name="*_s"  type="string"  indexed="true"  stored="true"/>
<dynamicField name="*_l"  type="long"   indexed="true"  stored="true"/>
<dynamicField name="*_t"  type="text"    indexed="true"  stored="true"/>

http://www.tnrglobal.com/blog/2010/07/dynamic-fields-in-apache-solr/

http://wiki.apache.org/solr/SchemaXml#Dynamic_fields

答案 1 :(得分:2)

扩展上面的答案。

您可以使用isSpecial,boolean,specialCategoryType等字段。在上面的例子中,它们被设置为true和android。

当选择此项(isSpecial)时,您可以优化查询并添加到谓词specialCategoryType:android。

编辑:

让我们说有两款产品,一款Android手机和一款Android笔记本电脑。 手机1- os:android;类型:电话;摄像头:800万像素; specCatFacet:os,type,camera; specCatRefine:os,类型 laptop- os:android;类型:膝上型电脑;屏幕尺寸:13; specCatFacet:OS,类型,屏幕; specCatRefine:os,类型 phone 2 - os:android;类型:电话;摄像头:4MP; specCatFacet:os,type,camera; specCatRefine:os,type

当人们搜索android时,三者都会出现。显示的方面可以是两组方面的并集。

单击phone1或2时,您将查看specCatRefine字段,并使用os优化搜索条件,键入并使用specCatFacet随后对其进行构面。

当点击笔记本电脑时,搜索会在操作系统上进行优化,在操作系统,类型,屏幕上进行类型和分面。

基本上,第二个搜索词细化和构面基于每个文档中的字段。您的搜索词精炼将有很多关于如何创建标准的逻辑。

希望这会有所帮助......