首页 文章

用于分面搜索的Solr Schema.xml

提问于
浏览
0

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

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

三星Galaxy S3

  • 类别:智能手机

  • 品牌:三星

  • 操作系统:Android

  • RAM:1 GB

  • 处理器:1 Ghz

  • 相机:8MP

  • 显示屏:4.7英寸

  • 和..

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

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

2 回答

  • 2

    动态字段是您所需要的 .

    你甚至可以这样做:

    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

  • 3

    扩展上面的答案 .

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

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

    编辑:

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

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

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

    当单击笔记本电脑时,搜索将在操作系统上进行优化,在操作系统,类型和屏幕上进行类型和刻面 .

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

    希望这可以帮助...

相关问题