我们正在使用电子商务应用程序实现solr . 主要目标是更快的搜索和更好的分面目录导航 .
但问题是,我们无法弄清楚如何将动态方面映射到Solr . 当我说动态方面时,我的意思是......
三星Galaxy S3
-
类别:智能手机
-
品牌:三星
-
操作系统:Android
-
RAM:1 GB
-
处理器:1 Ghz
-
相机:8MP
-
显示屏:4.7英寸
-
和..
过滤标准,如操作系统,内存,处理器,相机等,对每个产品都是动态的,有些拥有它,有些则对于方面有一套完全不同的过滤条件 . 因此,当有人点击Android时,将使用所选类别中的所有Android手机过滤结果 .
我们面临的一个问题是,我们无法确定solr schema.xml对支持分面搜索的这种数据字典的看法 .
2 回答
动态字段是您所需要的 .
你甚至可以这样做:
如果以这种方式设置架构,
_t
和_i
后缀将被理解为文本和整数类型 .http://www.tnrglobal.com/blog/2010/07/dynamic-fields-in-apache-solr/
http://wiki.apache.org/solr/SchemaXml#Dynamic_fields
扩展上面的答案 .
您可以使用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随后对其进行构面 .
当单击笔记本电脑时,搜索将在操作系统上进行优化,在操作系统,类型和屏幕上进行类型和刻面 .
实质上,第二个搜索词细化和构面基于每个文档中的字段 . 您的搜索词精炼将有很多关于如何创建标准的逻辑 .
希望这可以帮助...