Solr之分组查询facet

太过爱你忘了你带给我的痛 2022-08-02 00:14 641阅读 0赞

用户查询之后通过点击分组,能继续缩小搜索范围,来定位自己想要的内容,效果图入下:

Solr 中使用分组查询facet,强化你的搜索用户体验

Solrj 代码

  1. /**
  2. * 一个演示方法,根据查询关键词查询结果,连带查结果对应的栏目分组情况 。
  3. *
  4. * @param kw 搜索词
  5. */
  6. public static void query(String kw) {
  7. SolrQuery query = new SolrQuery();
  8. query.setQuery("title:" + kw);
  9. // 开启facet查询
  10. query.setFacet(true)
  11. // 设置没有结果的栏目不显示
  12. .setFacetMinCount(1)
  13. // 设置根据栏目id进行facet查询
  14. .addFacetField("catalog_id");
  15. try {
  16. QueryResponse rsp = solrServer4Article.query(query);
  17. // 搜索的结果
  18. SolrDocumentList docs = rsp.getResults();
  19. // 搜索结果对应的分组
  20. List<Count> list = rsp.getFacetField("catalog_id").getValues();
  21. for (Count count : list) {
  22. System.out.println(count.getName() + "->" + count.getCount());
  23. }
  24. } catch (Exception e) {
  25. log.error("从solr根据Page查询分页文档时遇到错误", e);
  26. }
  27. }

输出结果

  1. 10 ->25
  2. 1 ->1
  3. 5 ->1

我的搜索词是“mysql”,说明对于搜索结果,栏目10(mysql)有结果25条,栏目1(系列)有结果1条,栏目5(solr)有1条,那么这时你就可以根据这个结果,继续缩小你的搜索范围了。

相关说明

有时候需要设置多个分组,那么只需要针对不同的属性增加.addFacetField(“属性名”);即可,如在京东上搜“手机”
Solr 中使用分组查询facet,强化你的搜索用户体验

转至:http://www.devnote.cn/article/301.html

发表评论

表情:
评论列表 (有 0 条评论,641人围观)

还没有评论,来说两句吧...

相关阅读

    相关 solr facet浅谈

    solr facet详解[facet详解][facet] 本篇博客主要讲解如何避免facet查询缓慢,并不是solr本身的优化,而是换一种方法提高体验效果 实验数据是500