热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SolrJ中怎么操作solr增删改查

今天就跟大家聊聊有关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增删改查有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程笔记行业资讯频道,感谢大家的支持。


推荐阅读
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
author-avatar
山中幽水_418
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有