设为首页 收藏本站
查看: 1974|回复: 0

[经验分享] solr连接数据库

[复制链接]

尚未签到

发表于 2015-7-18 09:35:00 | 显示全部楼层 |阅读模式
solr与.net系列课程(三)solr连接数据库






   solr与.net系列课程(三)solr连接数据库
  上一章直接讲述的配置文件把大部分人看的很迷惑,大家都想听的是solr到底是怎么用的,好,这一节我们就开始链接数据库,首先讲一下连接之前都要配置哪些文件
  1.先下载连接sqlserver的驱动(sqljdbc4.jar)sqljdbc4.jar,),将其复制到C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\solr\WEB-INF\lib (C:\Program Files\Apache Software Foundation\Tomcat 7.0为tomcat安装路径)
    2.在C:\Program Files\Apache Software Foundation\Tomcat 7.0\solr\collection1\conf下新建data-confing.xml文件(名字任意,路径也可以任意)
    3.在C:\Program Files\Apache Software Foundation\Tomcat 7.0\solr\collection1\conf \solrconfig.xml,文件里配置data-confing.xml路径



  
  
C:\Program Files\Apache Software Foundation\Tomcat 7.0\solr\collection1\conf\data-config.xml  
  

  4.将solr4.72文件夹下的dist, contrib文件夹复制到C:\Program Files\Apache Software Foundation\Tomcat 7.0\
    5.在C:\Program Files\Apache Software Foundation\Tomcat 7.0\solr\collection1\conf \solrconfig.xml,文件里配置dist, contrib这两个文件夹的路径(solrconfig.xml已存在这些路径,如果以你放置的路径不一样,修改一下就可以了)




DSC0000.gif








  

  6.将dist文件夹下的 DSC0001.png 这两个文件复制到与数据库驱动同一个文件夹下   
  以上配置的路径我是用绝对路径配置的,也可以用相对路径,
  以上就是需要配置的内容了,下面我将结合前一节的内容,讲解如何配置连接数据库
  首先是配置data-confing.xml文件,data-confing.xml文件就是连接数据库的配置文件(刚才新建的),将如下代码粘贴到该文件中





  

'${dataimporter.last_index_time}'">            
  
  




  
  我们来分析一下上面的代码



     '${dataimporter.last_index_time}'">            
  
  



  
  这个就是从哪张表里取数据了的sql语句了   
  query是获取全部数据的SQL(solr从sql中获取那些数据)
     deltaImportQuery是获取增量数据时使用的SQL(数据库新增数据是,追加到solr的数据)
     deltaQuery是获取pk的SQL(数据库新增数据是,追加到solr的数据时的条件,根据id ,条件是最后一次获取的时间,${dataimporter.last_index_time,最后获取的时间})



   
  
  这个就是数据库与solr的映射关系了,在上一节schema.xml中定义的field子节点对应,那么根据本届内容field就要这么定义





  其他的field就可以删掉了,也可以多定义一些备用,这样table表中id下的数据就存储在了solr中id的位置,name就存储在solrname下了









  这个不要删,这是solr自已自己内部的字段,删掉会报错,这样solr就配置完成.
  
  之前有朋友问到过多数据库多表的问题,很简单,先说多表的问题:
   …..   每一个 entiy就是一张表,有几张表就写几个,这里就要注意一个问题了,单核的solr是把所有的数据存储在在一个文件中,上文中结束的时候说道, schema.xml这个文件可以设置主键(一定要有主键),默认是id, data-confing.xml,文件定义每张表时也指定了主键,没写没人id,多张表示就要注意id的唯一行了,以为我们总是喜欢使用自增id,所以多张张表的id,主键的的重复solr是不会报错了,但是遵循将相同是后一条覆盖前一条,所以多张表时,就要考虑主键唯一的问题了,如果使用guid的形式那就没问题了,(solr从数据库获取数据是按 …..  的顺序逐个表去取数据了),那如果非要主键重复存储怎么办,也可以,使用多核模式(以后会讲)
  多表实例:





  

'${dataimporter.last_index_time}'">            
  
  


            
  
  




  现在再说一说多数据库的问题了,一个配置文件可以配置多个数据源。增加一个dataSource元素就可以增加一个数据源了。name属性可以区分不同的数据源。如果配置了多于一个的数据源,那么要注意将name配置成唯一的。
  多数据库实例:








然后这样使用
..

..


..

..

  如果存在多表链接怎么办,这个也可以解决,  中可以嵌套达到链接效果
  例:





                       
            




  这个相当于 select a.id ,a.name ,b. description ,c. phone from item as a left join feature as b on a.id=b. item_id left join item_category as c on a.id=c. category _id
     这个链接也是有限制的:
           子Entity的query必须引用父Entity的pk
           子Entity的parentDeltaQuery必须引用自己的pk
           子Entity的parentDeltaQuery必须返回父Entity的pk
           deltaImportQuery引用的必须是自己的pk
   那说了这么多 我们来简单的配置一个吧,现在有一张表tableA,有如下字段id ,name,address,phone,class,addtime 我想把这张表的数据存储到solr中, 怎配置,首先在schema.xml 的 fields 节点配置索引字段,(name可以随便起,type是类型,上文字提到过solr的类型,这里为了省事就都用string了)












  上文中还提到过 copyfeild与DynamicField,这个可用可不用,怎样用上文已经解释了,solr中会自带一些定义,想删就删,不删也没事,然后我们配置data-confing.xml,如下,





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-87881-1-1.html 上篇帖子: CentOS下用Tomcat+Zookeeper+Nginx+Solr完美搭建SolrCloud平台(一) 下篇帖子: solr之定时增量索引实现
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表