精华内容
下载资源
问答
  • Solr连接数据库

    千次阅读 2014-07-10 10:49:46
    要建立自己的全文检索,一般都需要从数据库导入数据,在原来配置的基础上,增加导入的功能 1、D:\apache-tomcat-7.0.27\solr\conf\solrconfig.xml中增加 Xml代码 requestHandlername="/dataimport"class="org....

    要建立自己的全文检索,一般都需要从数据库导入数据,在原来配置的基础上,增加导入的功能 
    1、D:\apache-tomcat-7.0.27\solr\conf\solrconfig.xml中增加 

     

    Xml代码
    1. <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
    2.     <lst name="defaults">  
    3.           <str name="config">data-config.xml</str>  
    4.     </lst>  
    5. </requestHandler>  


    2、增加D:\apache-tomcat-7.0.27\solr\conf\data-config.xml,内容为数据库的连接信息 

     

     

    Xml代码
    1.   <?xml version="1.0" encoding="UTF-8"?>  
    2. <dataConfig>  
    3. <dataSource type="JdbcDataSource" driver="oracle.jdbc.driver.OracleDriver"  
    4.     url="jdbc:oracle:thin:@10.74.8.206:1521:orcl"  
    5.     user="uname"  
    6.     password="pwd"/>  
    7.   
    8. <document name="zpxx">           
    9.     <entity name="zpxx" query="select * from vw_zp_fullindex" transformer="ClobTransformer">                    
    10.                 <field column="GANG_WEI_BH"      name="GANG_WEI_BH"      />  
    11.                 <field column="GANG_WEI_MC"      name="GANG_WEI_MC"      />  
    12.                 <field column="GANG_WEI_MS"      name="GANG_WEI_MS"       clob="true"/>  
    13.                 <field column="GONG_ZU_DD_ZW"    name="GONG_ZU_DD_ZW"    />  
    14.                 <field column="QI_TA"            name="QI_TA"            />  
    15.                 <field column="YUE_XIN"          name="YUE_XIN"          />  
    16.                 <field column="ZHI_CHENG"        name="ZHI_CHENG"        />  
    17.                 <field column="GANGWEILB"        name="GANGWEILB"        />  
    18.                 <field column="COMPID"           name="COMPID"           />  
    19.                 <field column="DAN_WEI_MC"       name="DAN_WEI_MC"       />  
    20.                 <field column="DANWEIXZ"     name="DANWEIXZ"         />  
    21.                 <field column="JING_YING_FW" name="JING_YING_FW"     />  
    22.                 <field column="DAN_WEI_JJ"       name="DAN_WEI_JJ"        clob="true"/>  
    23.                 <field column="DAN_WEI_DZ"       name="DAN_WEI_DZ"       />  
    24.                 <field column="HANGYELB"     name="HANGYELB"         />  
    25.     </entity>  
    26. </document>  
    27. </dataConfig>  


    因为有Clob字段,所以需要加上ClobTransformer 
    3、D:\apache-tomcat-7.0.27\solr\conf\schema.xml文件中增加 

     

     

    Xml代码
    1.  <!--自定义Field开始 -->  
    2.             <field name="GANG_WEI_BH"        type="string" indexed="true" stored="true" required="true"/>  
    3.             <field name="GANG_WEI_MC"        type="text" indexed="true" stored="true" />  
    4.             <field name="GANG_WEI_MS"        type="text" indexed="true" stored="true" />  
    5.             <field name="GONG_ZU_DD_ZW"      type="text" indexed="true" stored="true" />  
    6.             <field name="QI_TA"              type="text" indexed="true" stored="true" />  
    7.             <field name="YUE_XIN"            type="text" indexed="true" stored="true" />  
    8.             <field name="ZHI_CHENG"          type="text" indexed="true" stored="true" />  
    9.             <field name="GANGWEILB"          type="text" indexed="true" stored="true" />  
    10.             <field name="COMPID"         type="string" indexed="true" stored="true" />  
    11.             <field name="DAN_WEI_MC"     type="text" indexed="true" stored="true" />  
    12.             <field name="DANWEIXZ"           type="text" indexed="true" stored="true" />  
    13.             <field name="JING_YING_FW"       type="text" indexed="true" stored="true" />  
    14.             <field name="DAN_WEI_JJ"     type="text" indexed="true" stored="true" />  
    15.             <field name="DAN_WEI_DZ"     type="text" indexed="true" stored="true" />  
    16.             <field name="HANGYELB"           type="text" indexed="true" stored="true" />    
    17. <!--自定义Field结束 -->  
    18.   
    19.   <copyField source="DAN_WEI_JJ" dest="text"/><!--clob字段 -->  
    20.   <copyField source="GANG_WEI_MS" dest="text"/>  


    把原有文件中id字段的required="true"去掉,否则导入的时候,会验证id字段,其实自己在做的时候,如果其他字段没有的话,可以删除 
    3、还要把oracle的jdbc驱动放到D:\apache-tomcat-7.0.27\webapps\solr\WEB-INF\lib 
    4、http://localhost:8080/solr/dataimport?command=full-import即可以进行导入数据 
    5、查询则通过http://localhost:8080/solr/admin/进行查询,输入查询字符串(Query String)"DAN_WEI_JJ:计算机"即可以查看全文检索结果

     

    展开全文
  • Solr 连接数据库

    2015-10-31 13:11:00
    实际工程应用中,从数据库导出数据创建索引再常见不过了,现在实验一下从数据库导入数据创建索引。 一、版本说明 Solr版本:4.7.0 数据库:sqlserver2005 二、配置步骤 1、 准备的jar包 1) solr-...

    实际工程应用中,从数据库导出数据创建索引再常见不过了,现在实验一下从数据库导入数据创建索引。

     

    一、版本说明

    Solr版本:4.7.0

    数据库:sqlserver2005

     

    二、配置步骤

    1、  准备的jar包

    1)  solr-dataimporthandler-extras-4.7.0.jar;在solr发布包solr-4.7.0\dist里面有

    2)  solr-dataimporthandler-4.7.0.jar;在solr发布包solr-4.7.0\dist里面有

    3)  jtds-1.2.2.jar;网上自己找

    2、  修改solr的core配置

    要想哪个core从数据库导入数据建索引就修改哪个core的配置。

     

    2.1修改solrconfig.xml

    添加如下这段配置:

    1. <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">   
    2.       <lst name="defaults">   
    3.            <str name="config">data-config.xml</str>   
    4.       </lst>   
    5. </requestHandler>  

     

    2.2添加data-config.xml

    在solrconfig.xml同一个文件夹内建立data-config.xml,其配置如下:

    1. <?xml version="1.0" encoding="UTF-8" ?>  
    2.   
    3. <dataConfig>   
    4.   <dataSource type="JdbcDataSource"   
    5.               driver="net.sourceforge.jtds.jdbc.Driver"   
    6.               url="jdbc:jtds:sqlserver://localHost/MyHousekeeper"   
    7.               user="sa"   
    8.               password="123456"/>   
    9.   <document>   
    10.         <entity name="pay" query="SELECT payId,payName,payMoney,payDescription,payDatetime FROM t_pay">  
    11.         <field column="payId"          name="id" />  
    12.         <field column="payName"        name="name" />  
    13.         <field column="payMoney"       name="money" />  
    14.         <field column="payDescription" name="description" />  
    15.         <field column="payDatetime"    name="datetime" />  
    16.         </entity>   
    17.   </document>   
    18.   
    19. </dataConfig>  

     

    2.3修改schema.xml

    修改这个的目的是让solr知道有哪些field,是否需要索引,是否需要在索引库中存储原文,以及field类型。在上面的sql中有很多种数据类型。

    payId:整型

    payName:字符型

    payMoney:浮点数

    payDescription:大文本

    payDatetime:日期时间格式

    首先在schema.xml中申明field类型,配置在<types> </types>内。下面配置的sring类型是不会做分词处理的,视为完整的一个词,text_ik是一个中文分词器ik-analyzer,专门处理中文分词。

    如下:

    1. <types>  
    2.    <fieldtype name="string"  class="solr.StrField"       sortMissingLast="true" omitNorms="true"/>  
    3.    <fieldType name="long"    class="solr.TrieLongField"  precisionStep="0" positionIncrementGap="0"/>  
    4.    <fieldType name="float"   class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>  
    5.    <fieldType name="date"    class="solr.TrieDateField"  precisionStep="0" positionIncrementGap="0"/>  
    6.    <fieldType name="text_ik" class="solr.TextField">   
    7.      <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>   
    8.    </fieldType>   
    9.   </types>  

     

    然后申明field,field的名字应该和sql的查询结果集列名一致,如果不一致,需要在data-config.xml中entity标签中用field指明列和field的对应关系。

    Field配置如下:

    1. <fields>     
    2.   <field name="_version_"       type="long"       indexed="true"  stored="true"/>  
    3.    
    4.   <field name="id"              type="long"       indexed="true"  stored="true"  multiValued="false" required="true"/>  
    5.   <field name="name"            type="string"     indexed="true"  stored="true"  multiValued="false" />   
    6.   <field name="money"           type="float"      indexed="true"  stored="true"  multiValued="false" />   
    7.   <field name="description"     type="text_ik"    indexed="true"  stored="true"  multiValued="false" />   
    8.   <field name="datetime"        type="date"       indexed="true"  stored="true"  multiValued="false" />   
    9.  </fields>  


    其中如下field是必须的,用于标记版本信息,由solr内部自己维护。

    1. <field name="_version_"       type="long"       indexed="true"  stored="true"/>  


    三、导入测试

    进入solr管理界面,command选择full-import全部导入;entity需要导入的实体,也就是配置的哪个sql,点击 execute执行导入,如果数据很多的话需要导一段时间,不时的点一下refresh status刷新一下,看看导入是否完成,导入完成后会告诉你导入了多少数据,用了多少时间。如下图

    做个查询测试,query,

    q,description:米;查询description这个field名的米相关数据

    wt,json;查询结果返回格式,默认json

    execute query,执行查询,看到返回的json格式的查询结果了。


    参考文献:

    1)  http://www.chepoo.com/solr4-database-import-create-index.html

    2)  http://blog.csdn.net/bruce128/article/details/17796705

    转载于:https://www.cnblogs.com/jinhaoObject/p/4925384.html

    展开全文
  • solr连接数据库查询

    千次阅读 2017-11-07 11:08:55
    接下来进行solr连接数据库,生成索引,以及查询方法。  数据库建表语句: CREATE TABLE `test_person` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL COMMENT '姓名', `description...

    参考链接:http://www.cnblogs.com/xbgfy/articles/5623501.html

    接下来进行solr连接数据库,生成索引,以及查询方法。 
    数据库建表语句:

    CREATE TABLE `test_person` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(50) DEFAULT NULL COMMENT '姓名',
      `description` varchar(500) DEFAULT NULL COMMENT '简介',
      PRIMARY KEY (`id`)
    );
    
    insert into test_person(name,description) values('周星驰','香港著名喜剧演员');
    insert into test_person(name,description) values('周润发','香港著名演员');
    insert into test_person(name,description) values('周节能','台湾著名歌手,号称音乐天王');
    insert into test_person(name,description) values('成龙','香港著名动作演员');
    insert into test_person(name,description) values('山本一木','日本鬼子');
    insert into test_person(name,description) values('仓木麻衣','日本歌手');
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    1、将数据库驱动包放入solr项目工程中(我用的mysql,使用jar包mysql-connector-java-5.1.18-bin.jar); 
    2、在自己创建的core实例的conf文件中进行数据配置(我的是D:\testsolr\solr_home\solr\my_core\conf\solr-data-config.xml),覆盖内容如下(数据库表自己根据配置自己建):

    (PS1:在solr7.1.0中并没有solr-data-config.xml文件,需要自己手动创建,然后将内容复制到文件中)

    (PS2:下面的query语句,select * from test_person where name like '%${dataimporter.request.name}%' 经过测试,

    这样查询不出内容,需要改为 select * from test_person)

    <?xml version="1.0" encoding="UTF-8"?>
    <dataConfig>
        <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" user="root" password="jhp123" />
        <document name="messages">
            <entity name="message" transformer="ClobTransformer" query="select * from test_person where name like '%${dataimporter.request.name}%'">
                <field column="id" name="id" />
                <field column="name" name="name" />
                <field column="description" name="description" />
            </entity>
        </document>
    </dataConfig>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    url=”jdbc:mysql://localhost:3306/test” user=”root” password=”123” 这里配置了 mysql 的连接路径 , 用户名 , 密码

    <field column="name" name="name" />  这里配置的是数据库里要索引的字段, 注意name是在分词的第4 步配置的,同时只有这样匹配的字段最终solr才会查询显示出来,所以需要用到的字段必须在该文件中<field column="***" name="***" />配置才可以;
    • 1

    3、在D:\testsolr\solr_home\solr\my_core\conf\schema.xml文件中添加如下字段信息:

    <field name="name" type="textMaxWord" indexed="true" stored="true" multiValued="true" />
        <field name="description" type="textMaxWord" indexed="true" stored="true" multiValued="true" />
    • 1
    • 2

    注意这里的配置是数据库里需要用到的字段,在分词时这两个字段已配置,故此步可省略。其中id字段已存。 
    4、在 D:\testsolr\solr_home\solr\my_core\conf 目录下的 solrconfig.xml 文件里 , 添加如下代码 :

    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
          <str name="config">D:/testsolr/solr_home/solr/my_core/conf/solr-data-config.xml</str> 
        </lst>
      </requestHandler>
    • 1
    • 2
    • 3
    • 4
    • 5

    D:/testsolr/solr_home/solr/my_core/conf/solr-data-config.xml为上一步的配置文件地址; 
    5、把本地下载解压的 solr文件里dist 目录下的 solr-dataimporthandler.jar 和 solr-dataimporthandler-extras.jar 复制到Tomcat \webapps\solr\WEB-INF\lib 目录下; 
    6、如图打开solr,把数据库(其实也可以用 http/file 资源)中的记录放到索引中。现大概看下步骤: 
    这里写图片描述

    7、测试查询: 
    这里写图片描述 

     

    展开全文
  • solr与.net系列课程(三)solr连接数据库 上一章直接讲述的配置文件把大部分人看的很迷惑,大家都想听的是solr到底是怎么用的,好,这一节我们就开始链接数据库,首先讲一下连接之前都要配置哪些文件 1.先下载...
    本文转载自:https://www.cnblogs.com/wenxinghaha/p/3992770.html  作者:wenxinghaha 转载请注明该声明。

     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-config.xml文件(名字任意,路径也可以任意)
        3.在C:\Program Files\Apache Software Foundation\Tomcat 7.0\solr\collection1\conf \solrconfig.xml,文件里配置data-confing.xml路径

    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
        <lst name="defaults">  
              <str name="config">C:\Program Files\Apache Software Foundation\Tomcat 7.0\solr\collection1\conf\data-config.xml</str>  
        </lst>  
    </requestHandler>

        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已存在这些路径,如果以你放置的路径不一样,修改一下就可以了)

     <lib dir="C:/Program Files/Apache Software Foundation/Tomcat 7.0/contrib/extraction/lib" regex=".*\.jar" />
      <lib dir="C:/Program Files/Apache Software Foundation/Tomcat 7.0/dist/" regex="solr-cell-\d.*\.jar" />
    
      <lib dir="C:/Program Files/Apache Software Foundation/Tomcat 7.0/contrib/clustering/lib/" regex=".*\.jar" />
      <lib dir="C:/Program Files/Apache Software Foundation/Tomcat 7.0/dist/" regex="solr-clustering-\d.*\.jar" />
    
      <lib dir="C:/Program Files/Apache Software Foundation/Tomcat 7.0/contrib/langid/lib/" regex=".*\.jar" />
      <lib dir="C:/Program Files/Apache Software Foundation/Tomcat 7.0/dist/" regex="solr-langid-\d.*\.jar" />
    
      <lib dir="C:/Program Files/Apache Software Foundation/Tomcat 7.0/contrib/velocity/lib" regex=".*\.jar" />
      <lib dir="C:/Program Files/Apache Software Foundation/Tomcat 7.0/dist/" regex="solr-velocity-\d.*\.jar" />
    
       <lib dir="C:/Program Files/Apache Software Foundation/Tomcat 7.0/dist/" regex="solr-dataimporthandler-\d.*\.jar" />  

        6.将dist文件夹下的这两个文件复制到与数据库驱动同一个文件夹下    

        以上配置的路径我是用绝对路径配置的,也可以用相对路径,

        以上就是需要配置的内容了,下面我将结合前一节的内容,讲解如何配置连接数据库

        首先是配置data-confing.xml文件,data-confing.xml文件就是连接数据库的配置文件(刚才新建的),将如下代码粘贴到该文件中

    <?xml version="1.0" encoding="UTF-8"?>  
    <dataConfig>
        <dataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://192.168.0.8;DatabaseName=test" user="sa" password="123"/>
        <document name="Info">
                
            <entity name="zpxx"  transformer="ClobTransformer" pk="id"
                     query="select id, name from table"        
                     deltaImportQuery="select id, name from table"    
                     deltaQuery="SELECT id FROM table where adddate > '${dataimporter.last_index_time}'">             
                        <field column=“id"      name=“id"      />  
                        <field column=“name"      name=“name"      />  
             </entity>
        </document>
        </dataConfig>

     

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

        <dataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://192.168.0.8;DatabaseName=test" user="sa" password="123"/>

          这个显而易见,就是连接数据库的字符串了

    <document name="Info">
            <entity name="zpxx"  transformer="ClobTransformer" pk="id"
                     query="select id, name from table"        
                     deltaImportQuery="select id, name from table"    
                     deltaQuery="SELECT id FROM table where adddate > '${dataimporter.last_index_time}'">             
                        <field column=“id"      name=“solrid"      />  
                        <field column=“name"      name=“name"      />  
             </entity>
        </document>

     

         这个就是从哪张表里取数据了的sql语句了   

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

     <field column=“id"      name=“id"      />  
     <field column=“name"    name=“solrname"      />  

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

    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
       <field name="solrname" type=" string " indexed="true" stored="true" omitNorms="true"/>

         其他的field就可以删掉了(初学者不要删,容易出问题),也可以多定义一些备用,这样table表中id下的数据就存储在了solr中id的位置,name就存储在solrname下了

     <field name="_version_" type="long" indexed="true" stored="true"/>
       
       <!-- points to the root document of a block of nested documents. Required for nested
          document support, may be removed otherwise
       -->
       <field name="_root_" type="string" indexed="true" stored="false"/>

          这个不要删,这是solr自已自己内部的字段,删掉会报错,这样solr就配置完成.

     

          之前有朋友问到过多数据库多表的问题,很简单,先说多表的问题:

          <entity> …..  </entity> 每一个 entiy就是一张表,有几张表就写几个,这里就要注意一个问题了,单核的solr是把所有的数据存储在在一个文件中,上文中结束的时候说道, schema.xml这个文件可以设置主键(一定要有主键),默认是id, data-confing.xml,文件定义每张表时也指定了主键,没写默认id,多张表示就要注意id的唯一行了,平时我们总是喜欢使用自增id,所以多张表的id肯定会重复,主键的重复solr是不会报错了,但是遵循相同主键后一条覆盖前一条,所以多张表时,就要考虑主键唯一的问题了,如果使用guid的形式那就没问题了,(solr从数据库获取数据是按<entity> …..  </entity>的顺序逐个表去取数据了),那如果非要主键重复存储怎么办,也可以,使用多核模式

           多表实例:

    <?xml version="1.0" encoding="UTF-8"?>  
    <dataConfig>
        <dataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://192.168.0.8;DatabaseName="test" user="sa" password="123"/>
        <document name="Info">
                
            <entity name="zpxx"  transformer="ClobTransformer"
                     query="select id, name from table"        
                     deltaImportQuery="select id, name from table"    
                     deltaQuery="SELECT id FROM table where adddate > '${dataimporter.last_index_time}'">             
                        <field column=“id"      name=“id"      />  
                        <field column=“name"      name=“name"      />  
             </entity>
    
          
            <entity name="zpxx2"  transformer="ClobTransformer"
                     query="select id, name from table2"        
                     deltaImportQuery="select id, name from table2"    
                     deltaQuery="SELECT id FROM table2 where adddate > '${dataimporter.last_index_time}'">             
                        <field column=“id"      name=“id"      />  
                        <field column=“name"      name=“name"      />  
             </entity>
        </document>
        </dataConfig>

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

           多数据库实例:

    <dataSource type="JdbcDataSource" name="ds-1" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://db1-host/dbname" user="db_username" password="db_password"/>
    
    <dataSource type="JdbcDataSource" name="ds-2" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://db2-host/dbname" user="db_username" password="db_password"/>
    
    
    
     然后这样使用
        
    ..
    
    <entity name="one" dataSource="ds-1" ...>
    
       ..
    
    </entity>
    
    <entity name="two" dataSource="ds-2" ...>
    
       ..
    
    </entity>
    
    ..

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

         例:

       <entity name="item" query="select id name from item">                    
    
                <entity name="feature" query="select description  from feature where item_id='${item.ID}'"/>            
    
                <entity name="item_category" query="select phone from  item_category where  category _id='${item.ID}'">
    
                </entity>
    
            </entity>

         这个相当于 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了)

    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
       <field name="solrname" type=" string " indexed="true" stored="true" omitNorms="true"/>
    <field name=" address " type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
       <field name="phone" type=" string " indexed="true" stored="true" omitNorms="true"/>
       <field name="class" type=" string " indexed="true" stored="true" omitNorms="true"/>
       <field name="addtime" type=" date" indexed="true" stored="true" omitNorms="true"/>

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

    <dataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://192.168.0.8;DatabaseName=test" user="sa" password="123"/>
        <document name="Info">
            <entity name=" test "  transformer="ClobTransformer" pk="id"
    
                     query="select id, name ,address,phone,class,addtime from tableA"        
                     deltaImportQuery=" select id, name ,address,phone,class,addtime from tableA"    
                     deltaQuery="SELECT id FROM tableA where addtime > '${dataimporter.last_index_time}'">          
                        <field column="id"      name="id"      />  
                        <field column="name"      name="solrname"      />  
                        <field column="address "      name=“address "      />  
                        <field column="phone "      name="phone "      /> 
                        <field column="class "      name="class "      />  
                        <field column="addtime "      name="addtime "      /> 
             </entity>
        </document>
        </dataConfig>

         好了,这样就配置完成了,下面该开始执行了,执行有两种方式

         先说第一种,浏览器执行方式:

         终止跑索引                  http://192.168.0.9:8080/solr/collection1/dataimport?command=abort

         开始索引                     http://192.168.0.9:8080/solr/collection1/dataimport?command=full-import

         增量索引                     http://192.168.0.9:8080/solr/collection1/dataimport?command=delta-import

         直接在浏览器中输入 http://192.168.0.9:8080/solr/collection1/dataimport?command=full-import就可以了

         我们看看效果

     

        路径是D盘是因为我只在另一台电脑上执行的,那个配置在D盘了

        这种方式我们看不到执行过程,执行时间

        Solr还提供了图形化的执行方式,如下:

            Full Import工作原理
            执行本Entity的Query,获取所有数据;
            针对每个行数据Row,获取pk,组装子Entity的Query;
            执行子Entity的Query,获取子Entity的数据。

     

            Delta Import工作原理
            查找子Entity,直到没有为止;
            执行Entity的deltaQuery,获取变化数据的pk;
            合并子Entity parentDeltaQuery得到的pk;
            针对每一个pk Row,组装父Entity的parentDeltaQuery;
            执行parentDeltaQuery,获取父Entity的pk;
            执行deltaImportQuery,获取自身的数据;
            如果没有deltaImportQuery,就组装Query

        小结,今天就讲这么多吧,本来还想给大家展示个实例的,但是发现今天写的有点多,大家应该先理解理解,那真实的案例就在下一节讲述吧,我将为大家装备一个300万数据左右的表,让大家看看实际效果,并为大家讲述如何查询,查询参数等等.

        今天感觉写的有点乱,写完后面就忘了前面写的什么了,其实这里面还有好多细节没有讲述,如果大家在使用过程中有什么问题,可以直接给我留言,我会及时为大家解答的.

       这里先给大家展示一下300万数据查询的效果:

     我们模糊查询一下看看 ,body字段里面存储的是文章,都是几千字以的,现在查询body中带有"信号灯"的数据

     看效果

     

     

     

    这里补充一点,执行索引后在更改xml配置,下次重新执行索引是需重启tomcat

     qq群: 424259523

    展开全文
  • solr连接数据库配置

    2019-08-10 01:07:45
    NULL 博文链接:https://zihai367.iteye.com/blog/2204173
  • SOLR连接数据库的问题

    2016-04-06 05:29:46
    我有5个数据库,怎么在项目连接数据库的时候,分别建立出数据库不同的索引,5个数据库都是同样的字段 ,这个咋配置啊
  • 本文简单讲诉 solr建立全文索引,从数据库导入数据,生成索引文件,本文建立在已经搭建好solr应用的情况下,如要了解如何部署solr服务可先看上一文:solr 安装环境:jdk 7,solr4.10.1 ,tomcat 71,首先在solrconfig...
  • 在项目开发过程中为了提高查询效率和降低数据库的压力,因此此时就将查询量大的数据放到solr中,查询从solr中执行,不走数据库,但是数据库数据修改后怎么办呢,此时就要实现solr连接数据库,实现数据的定时同步,...
  • 提供一种可配置的方式向Solr导入数据,可以全量导入,也可以增量导入,还可声明式提供可配置的任务调度,让数据定时从关系型数据库中更新数据到Solr服务器 从maven中央仓库下载jar包 下载 mysql-connector-java-...
  • 话不多说直接上图 1.官方网址:https://lucene.apache.org/solr/ ...requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="default...
  • solr连接数据库的部分

    2019-01-19 17:04:01
    https://blog.csdn.net/GY325416/article/details/79655173
  • Solr连接数据库配置

    千次阅读 2013-05-04 14:54:51
    Solr是基于Lucene的全文搜索服务器, 它是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。... Get操作提出查找请求,...本文档介绍将Solr4.2.0部署到Tomcat6并连接数据库获取数据的方法。 一、
  • 本文简单讲诉 solr建立全文索引,从数据库导入数据,生成索引文件,本文建立在已经搭建好solr应用的情况下,如要了解如何部署solr服务可先看上一文:solr 安装 环境:jdk 7,solr4.10.1 ,tomcat 7 附:参考文档...
  • 在这里插入图片描述 在这里插入图片描述 这是连接时出现错误 在这 这些是我的配置信息
  • \data-config.xml,内容为数据库连接信息  Xml代码   xml   version = "1.0"   encoding = "UTF-8" ?>   < dataConfig >   < dataSource   type = "JdbcDataSource"   ...
  • 改章节是一篇关于修改配置的帖子    Solr是基于Lucene的全文索搜服务器, 它是一个立独的企业级索搜应用服务器,它对外供给相似于Web-service的API接口。... 本档文绍介将Solr4.2.0部署到Tomcat6并连接...
  • solr连接数据库查询数据库数据需要几步配置:
  • 以下资料整理自网络,以及查看solr帮助文档。主要分为两部分,第一部分是对《db-data-config.xml》的配置内容的讲解(属于高级内容),第二部分是DataImportHandler(属于基础),第三部分是对db-data-config.xml的进阶第...
  • solr 数据库关联,表数据添加不进solr,一直indexing, id没有映射,数据库表字段没有id,要把其中一字段映射为id;
  • solr 连接MySQL数据库

    2019-12-31 18:25:49
    solr 连接MySQL数据库 solr 搜索服务器 solr 概述       Solr是一个开源搜索平台,用于构建搜索应用程序。 它建立在Lucene(全文搜索引擎)之上。Solr是企业级的,快速的和高度可扩展的。使用Solr...
  • solr连接数据库查询数据库数据需要几步配置:1、创建一个Core,创建Core的方法之前已经很详细的讲解过了,如果还是不清楚请参考“创建Core”;2、导入mysql驱动包:2.1、下载 mysql 驱动包:mysql-connector-java-x....
  • Solr配置连接数据库

    千次阅读 2018-11-18 15:57:40
    现在我们介绍连接数据库,在建成的例子文件下找到conf文件夹,配置其中的data-config.xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;dataConfig&gt; &lt;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 383
精华内容 153
关键字:

solr连接数据库