Solr之分组查询facet
用户查询之后通过点击分组,能继续缩小搜索范围,来定位自己想要的内容,效果图入下:
Solrj 代码
/**
* 一个演示方法,根据查询关键词查询结果,连带查结果对应的栏目分组情况 。
*
* @param kw 搜索词
*/
public static void query(String kw) {
SolrQuery query = new SolrQuery();
query.setQuery("title:" + kw);
// 开启facet查询
query.setFacet(true)
// 设置没有结果的栏目不显示
.setFacetMinCount(1)
// 设置根据栏目id进行facet查询
.addFacetField("catalog_id");
try {
QueryResponse rsp = solrServer4Article.query(query);
// 搜索的结果
SolrDocumentList docs = rsp.getResults();
// 搜索结果对应的分组
List<Count> list = rsp.getFacetField("catalog_id").getValues();
for (Count count : list) {
System.out.println(count.getName() + "->" + count.getCount());
}
} catch (Exception e) {
log.error("从solr根据Page查询分页文档时遇到错误", e);
}
}
输出结果
10 ->25
1 ->1
5 ->1
我的搜索词是“mysql”,说明对于搜索结果,栏目10(mysql)有结果25条,栏目1(系列)有结果1条,栏目5(solr)有1条,那么这时你就可以根据这个结果,继续缩小你的搜索范围了。
相关说明
有时候需要设置多个分组,那么只需要针对不同的属性增加.addFacetField(“属性名”);即可,如在京东上搜“手机”
转至:http://www.devnote.cn/article/301.html
还没有评论,来说两句吧...