solrcloud的solr8连接

@ApiOperation(value="查询solr的高亮", notes="查询solr的高亮测试")
@ApiImplicitParams({@ApiImplicitParam(name="menuId", value="菜单id", required=true)
})
@GetMapping("/queryHighlight/{menuId}")
@Test  //Result<Object>
public void queryHighlight() {//@NotNull(message = "menuId不可为空"),如果请求和参数相同,则使用@PathVariable("menuId") Integer menuId
    Result<Object> result = null;
    try {
        List<String> url=new ArrayList<String>();
        url.add("10.217.37.30:2181");
        url.add("10.217.37.28:2182");
        Optional<String> zkChoot=Optional.of("/");
        CloudSolrClient.Builder builder=new CloudSolrClient.Builder(url,zkChoot);
        CloudSolrClient solrClient=builder.build();
        solrClient.setZkClientTimeout(10000);
        solrClient.setZkConnectTimeout(1000000);
        solrClient.setDefaultCollection("peiyajiecorecooletion");

        //封装查询对象
        //q查询关键字,默认为q=*.*;前面是域,后面是查询包含该字段
        SolrQuery sql=new SolrQuery();//查询所有 "*:*"
        //item_ittle:"苹果" 包含的意思
        sql.setQuery("roleName:应急资源_市级");//为创建体哦阿健对象开始添加条件,页面模糊查询,并且可以分析器
        sql.setSort("roleId", SolrQuery.ORDER.asc);//按照id升序
        sql.setStart(0);//设置起始页
        sql.setRows(3);//设置分页处理
        //返回哪些字段,以逗号分隔
        sql.set("fl","id,roleId,roleName");//只查询这两个areaName,id
        //打开高亮开关
        sql.setHighlight(true);//打开高亮开关
        sql.addHighlightField("roleName");//设置高亮域
        sql.setHighlightSimplePre("<em style='color:red;'>");//设置高亮前缀
        sql.setHighlightSimplePost("</em>");//设置高亮后缀
        //执行返回对象
        try {
            QueryResponse reponse=solrClient.query(sql);
            SolrDocumentList list=reponse.getResults();
            System.out.println("查询符合条件的个数有:"+list.getNumFound());

            //高亮容器,最外面是id:v,域名和List集合,第一个map是文档id,第二个是高亮显示的字段名称
            Map<String, Map<String, List<String>>> highlighting= reponse.getHighlighting();//获取高亮的结果,也可以说是高亮的容器
            for(SolrDocument solrDocument:list){
                String id= (String)solrDocument.get("id");
                System.out.println("id:"+id);
                String name=(String)solrDocument.getFieldValue("roleName");
                System.out.println("name:"+name);

                Map<String, List<String>> map=highlighting.get(id);//获取id为*的map
                List<String> highlist=map.get("roleName");
                System.out.println("map里面商品的名字为:"+highlist.get(0));

            }


        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        result = Result.success();
    } catch (Exception e) {
        result = Result.error(ResultEnum.SERVER_EXCEPTION);
        // logger.error("queryMenu --- "+e.getMessage(), e);
    }
    // return result;
}

 

注意常见问题:

https://www.cnblogs.com/davidwang456/p/5241429.html?_t=t

Collections:是solrCloud集群中一个完整的逻辑上倒排索引,和一个独立的config set相关联,由一个或者多个shard组成,shard可以在不同服务器上,shard对搜索接口来说适应性的,搜索着不用考虑搜索时如何指定shard,只需要传入collection名称即可。

 

Config set包含两个最根本的配置文件solrconfig.xmlschema.xml,视这两个文件的内容而定是否需要包含其他文件。SolrCloudconfig set目录会上传到zookeeper中,而传统单机Solrconfig set是保存在本地文件夹中。

Core:一个solr包含索引和配置文件运行的实例。一个replica对应一个core实例,同一个shard对应的replicacore配置和缩影是一样的,但是是不同的实例

Shardcollection一个逻辑分片,每个shard对应一个core,并且包含一个索引,一个shard有至少一个replica,当有多个replica选举。就相当于solr cores

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值