千家信息网

SolrJ 中怎么操作solr增删改查

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,今天就跟大家聊聊有关SolrJ 中怎么操作solr增删改查,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Solr的特性包括:• 高级的全文搜索
千家信息网最后更新 2024年11月26日SolrJ 中怎么操作solr增删改查

今天就跟大家聊聊有关SolrJ 中怎么操作solr增删改查,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

Solr的特性包括:
• 高级的全文搜索功能
• 专为高通量的网络流量进行的优化
• 基于开放接口(XML和HTTP)的标准
• 综合的HTML管理界面
• 可伸缩性-能够有效地复制到另外一个Solr搜索服务器
• 使用XML配置达到灵活性和适配性
• 可扩展的插件体系

 //分页查询 //创建SolrServer对象,要对solr HttpSolrServer server = new HttpSolrServer(url);        //连接solr服务器超时时间 单位毫秒         server.setConnectionTimeout(timeout);        //是否允许跟踪重定向 默认false         server.setFollowRedirects(followRedirects);      //是否允许压缩         server.setAllowCompression(allowCompression);     //最大重新连接次数         server.setMaxRetries(maxRetries);//创建查询对象 SolrQuery query = communitySolrHandler.createQuery(pagination);public SolrQuery createQuery(Pagination pagination){       SolrQuery query = new SolrQuery();       CommunitySolrField k  = pagination.getDto();       String value = k.getShortPy();       StringBuilder sb = new StringBuilder();       //拼接查询条件       if (!CollectionUtils.isEmpty(k.getRegionIds())){           for (String regionId:k.getRegionIds()){               sb.append(" regionId:"+regionId);           }       }       if (!CollectionUtils.isEmpty(k.getProjectIds())){           for (String projectId:k.getProjectIds()){               sb.append(" projectId:"+projectId);           }       }       query.setQuery(sb.toString());       //在满足上面条件之外 过滤下面的条件       if (StringUtils.hasText(value)){           if (ToolUtils.matcherZh(value)){               query.addFilterQuery(" communityName:"+value);           }else {               query.addFilterQuery("shortPiny:"+value.toLowerCase()+"*" );           }       }       //分页返回结果       int  start =  ToolUtils.start(pagination.getPageNo(), pagination.getPageSize()) ;     // 从第几条开始查询       query.setStart(start);       query.setRows(pagination.getPageSize());       return  query;   }//更新索引 一般这段代码是用定时任务来跑得 ConcurrentUpdateSolrServer server = new ConcurrentUpdateSolrServer(solrJSearchClient.getUrl()+ SolrTable.community.toString(), solrJSearchClient.getQueueSize(), solrJSearchClient.getThreadCount());        List list =  communityDao.findAllCommunitySolr() ;        if (CollectionUtils.isEmpty(list)) {            return;        }        List ids = new ArrayList();        List docs = new ArrayList();        SolrInputDocument doc;        HanZi hanZi;        for (CommunityDto communityDto:list){            doc = new SolrInputDocument();            hanZi = new HanZi(communityDto.getName());            doc.addField("id",communityDto.getId());            doc.addField("communityName",communityDto.getName());            doc.addField("piny",communityDto.getPiny());            doc.addField("shortPiny",hanZi.getPinYinHeadChar());            doc.addField("sortDefault",communityDto.getSortDefault());            doc.addField("regionId",communityDto.getDicRegionId());            doc.addField("projectId",communityDto.getProjectId());            docs.add(doc);            ids.add(communityDto.getId());        }        try {            //先删除            server.deleteById(ids);            server.commit();            //再添加/更新索引            server.add(docs);            //对索引进行优化            server.optimize();            server.commit();        } catch (Exception e) {            e.printStackTrace();        }

看完上述内容,你们对SolrJ 中怎么操作solr增删改查有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0