solr 高亮、分页、排序、过滤查询

时间:2025-03-10 08:36:08

  高亮、分页、排序、过滤查询

           //关键字主查询 高亮查询
            HighlightQuery query = new SimpleHighlightQuery();
            Criteria name = new Criteria("name").is(name);
            (name);

            //条件过滤查询,对结果过滤
            if (type!==""){
                FilterQuery filterQuery=new SimpleFilterQuery();
                Criteria criteriaType = new 
                Criteria("type").is(type);
                (criteriaType);
                (filterQuery);
            }

            //高亮字段
            HighlightOptions highlightOptions = new HighlightOptions();
            ("name");
            ("info");

            ("<span style='color:blue'>");
            ("</span>");
            (highlightOptions);
            //分页
            ((pageNum-1,pageSize));
            //排序
            (("xxx").descending());
            Page<XXX> highlightPage = (solr_core, query, );

            //解析高亮结果
            List<HighlightEntry<XXX>> highlighted = ((HighlightPage<XXX>) highlightPage).getHighlighted();
            for (HighlightEntry<SolrData> itemHighlightEntry : highlighted) {
                //包含高亮文档
                XXX item = ();
                //高亮的数据
                List<> highlights = ();
                if(highlights != null && () >0) {
                    //多字段高亮
                    for (int i = 0; i < () ; i++) {
                        //域的高亮数据
                         highlight = (i);
                        Field field = ();
                        if (().equals("name")){
                            String title = ().get(0);
                            (title);
                        }
                        else {
                            String title = ().get(0);
                            (title);
                        }
                    }
                }
            }
            List<XXX> content = ();

 facet统计

SimpleFacetAndHighlightQuery simpleFacetAndHighlightQuery = new SimpleFacetAndHighlightQuery();
(new SimpleStringCriteria("*:*"));

       
FilterQuery filterQuery = new SimpleFilterQuery();
Criteria criteriaType = new Criteria("域字段").is("参数");
(criteriaType);
(filterQuery);

FacetOptions facetOptions = new FacetOptions();
//设置分类的域字段
("域字段");
//分类返回的条数,默认为10
(20);
(facetOptions);
((0, 100));
Page<存入sorl对应的类> highlightPage = (solr_core, simpleFacetAndHighlightQuery, "存入sorl对应的类".class);
Page<FacetFieldEntry> facetResultPage = ((FacetAndHighlightPage<存入sorl对应的类>) highlightPage).getFacetResultPage("域字段");