博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
solr6.6的Facet和Group之间的区别
阅读量:6123 次
发布时间:2019-06-21

本文共 2920 字,大约阅读时间需要 9 分钟。

hot3.png

1.对字段(域)为多值属性的,即multiValued="true"。

facet是可以对多值属性进行分组的,但是Group是不可以的。

2.对字段(域)为分词属性的,如下:<field name="docText" type="text_ik" multiValued="false" indexed="true" required="false" stored="true"/>

facet是可以对分词字段进行分组的,但Group是不可以的。

3.对于其他字段属性的,目前测试的string、long等,facet和group都是可以进行分组的。\

4.传入多个分组字段时,每个字段都会有一个对应的查询分组结果,即各个字段之间是平行关系,非嵌套关系。

下面给出一些代码和测试结果:

facet的测试:

public void solrFacet(String collectionName, String strCondition,

            String... fields) {
        try {
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.set("collection", collectionName);
        solrQuery.setFacet(true);

       //控制输出分组的个数,对于有上千个分组的结果,可以控制只返回前一百个分组

        solrQuery.setFacetLimit(10);
        solrQuery.addFacetQuery(strCondition);
        solrQuery.addFacetField(fields);

        //分组后count数小于设置的组会从结果列表中抛弃

        solrQuery.setFacetMinCount(2);

       //默认按count降序排序,即各个分组包含的个数为count

        solrQuery.setFacetSort(solrQuery.getFacetSortString());
        QueryResponse solrQueryResponse=solrServer.query(solrQuery);
        List<FacetField> facetFields = solrQueryResponse.getFacetFields();
        //返回facet列表
        for (FacetField facet : facetFields) {
            System.out.println(facet.getName());
            System.out.println("------");
            List<Count> values = facet.getValues();
            for (Count count : values) {
                System.out.println(count.getName()+"---"+count.getCount());
            }
        }
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

group的测试:

    /**

     * solr 分组查询 group by
     */
    public void solrGroup(String strCondition, String... fields) {

        try {

            SolrQuery solrQuery = new SolrQuery();
            solrQuery.setQuery(strCondition);
            solrQuery.setParam("group", true);// 是否分组

            solrQuery.setParam("group.field", fields);// 分组的域(此处以公司id进行分组)

            // solrQuery.setParam("group.query",

            // "id:*");//还可以根据其他条件进行过滤,如价格在1到100之间

            solrQuery.setParam("group.limit", "3");// 每组显示的个数,默认为1

            // solrQuery.setParam("group.ngroups",

            // true);//是否计算所得分组个数;注意:当每个分组显示数目大于1个时,不能用分组数量来计算总页码

            // solrQuery.setStart(0); //起始索引值

            // solrQuery.setRows(100);//显示几条数据

            QueryResponse resp = solrServer.query(solrQuery);

            GroupResponse gresp = resp.getGroupResponse();// 注意:此处不能再用resp.getResults()接收结果

            List<GroupCommand> commands = gresp.getValues();

            if (commands != null) {

                for (GroupCommand com : commands) {
                    // System.out.println("总的分组个数:" + com.);
                    System.out.println("values:" + com.getName());
                    System.out.println("分组的个数:" + com.getValues().size());
                    if (com.getValues().isEmpty()) {
                        System.out.println("没有值...");
                    }
                    for (Group group : com.getValues()) {

                        SolrDocumentList hits = group.getResult();

                        System.out.println("涉及文档个熟:" + hits.size());
                        for (SolrDocument doc : hits) {
                            System.out.println("id: "
                                    + (String) doc.getFieldValue("id")
                                    + ", rowkey: "
                                    + (String) doc.getFieldValue("rowkey")
                                            .toString() + ", docText"
                                    + doc.getFieldValue("docText") + "");

                        }

                    }

                }

            }

        } catch (SolrServerException e) {

            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

转载于:https://my.oschina.net/u/3197158/blog/1821212

你可能感兴趣的文章
12.通过微信小程序端访问企查查(采集工商信息)
查看>>
WinXp 开机登录密码
查看>>
POJ 1001 Exponentiation
查看>>
HDU 4377 Sub Sequence[串构造]
查看>>
云时代架构阅读笔记之四
查看>>
WEB请求处理一:浏览器请求发起处理
查看>>
Lua学习笔记(8): 元表
查看>>
PHP经典算法题
查看>>
LeetCode 404 Sum of Left Leaves
查看>>
醋泡大蒜有什么功效
查看>>
hdu 5115(2014北京—dp)
查看>>
数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)...
查看>>
PHP读取日志里数据方法理解
查看>>
第五十七篇、AVAssetReader和AVAssetWrite 对视频进行编码
查看>>
Vivado增量式编译
查看>>
一个很好的幻灯片效果的jquery插件--kinMaxShow
查看>>
微信支付签名配置正确,但返回-1,调不出支付界面(有的手机能调起,有的不能)...
查看>>
第二周例行报告
查看>>
vue实现点击展开,点击收起
查看>>
如何使frame能居中显示
查看>>