本文主要解释如何使用solr4.7分组查询方面。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习“如何使用solr4.7分组查询方面”!
Solr将面向导航的查询结果称为方面。它不修改查询结果信息,而是根据分类将计数信息添加到查询结果中,然后用户根据计数信息进行进一步的查询,比如淘宝的查询列表,显示了与不同类别相关的查询结果数量。
例如,搜索数码相机将根据制造商和分辨率等维度在搜索结果列中列出,其中制造商和分辨率是方面。
然后厂商下面会有尼康、佳能、索尼等品牌,这叫约束。
接下来,根据选择,列出当前的导航路径,称为面包屑。
Solr有几个面:
普通的方面,比如从厂商品牌的维度建立事实。
查询方面时,比如根据价格,会根据价格设置多个区间,比如0-10、10-20、20-30等。
日期方面也是一个特殊的范围查询,例如按月方面。
facet的主要优点是可以任意组合搜索条件,避免无效搜索,提高搜索体验。
方面都是在查询过程中由参数指定的。例如
在http api中这样写:
引用
facet=true facet . field=manu ' Java代码solrj这样写:
query . setfacet(true);//是否分组查询
query . setrows(0);//设置返回结果的数量。如果分组查询,可以将其设置为0。
query . addfacetfield(' region ');//添加分组字段q。
query.addFacetField('主题');//添加分组字段q。
query responsiorsp=server . query(query);
//取出结果
FacetFieldfacetField=RSP . getfacetfield(' region ');
ListCountcounts=null
if(facetField!=null){ 0
counts=facetfield . getvalues();
if(算数!=null){ 0
for(count count : counts){ 0
if(count.getCount()!=0){
list region . add(count . getname()'(' count . getcount()')');
}
}
map.put('region ',list region);
}
}
FacetFieldfacetFieldTheme=RSP . getfacetfield('主题');
ListCountcountsTheme=null
nbsp; if (facetFieldTheme != null) {
countsTheme = facetFieldTheme.getValues();
if (countsTheme != null) {
for (Count count : countsTheme) {
if (count.getCount() != 0) {
listTheme.add(count.getName()+"("+count.getCount()+")");
}
}
map.put("theme", listTheme);
}
}
而xml返回的结果为这样:
<lst name="facet_fields"> <lst name="manu"> <int name="Canon USA">17</int> <int name="Olympus">12</int> <int name="Sony">12</int> <int name="Panasonic">9</int> <int name="Nikon">4</int> </lst> </lst>
通过java代码可以这样获取facet结果:
List<FacetField> facetFields = queryResponse.getFacetFields();
在已有的查询基础上增加facet query, 可以这样写:
solrQuery.addFacetQuery("quality:[* TO 10]")
比如对价格按照指定的区间进行facet, 可以这样加上facet后缀:
引用
&facet=true&facet.query=price:[* TO 100]
&facet.query=price:[100 TO 200];&facet.query=[price:200 TO 300]
&facet.query=price:[300 TO 400];&facet.query=[price:400 TO 500]
&facet.query=price:[500 TO *]
如果要对价格在400到500期间的产品做进一步的搜索, 那么可以这样写(使用了solr的过滤查询):
引用
http://localhost:8983/solr/select?q=camera &facet=on&facet.field=manu&facet.field=camera_type &fq=price:[400 to 500]
注意这里的facet field不再包含price了
如果这里对类型做进一步的查询, 那么query语句可以这样写:
引用
http://localhost:8983/solr/select?q=camera &facet=on&facet.field=manu &fq=price:[400 to 500] &fq=camera_type:SLR
facet的使用场景:
1.类目导航
2.自动提示, 需要借助一个支持多值的tag field.
3.热门关键词排行, 也需要借助一个tag field
到此,相信大家对“solr4.7分组查询facet怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/155619.html