• 将数据库表导入到solr索引


    将数据库表导入到solr索引

    1. 编辑solrcofnig.xml添加处理器

       <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
       	<lst name="defaults">
       	  <str name="config">data-config.xml</str>
       	</lst>
       </requestHandler>
      
    2. 创建一个名为data-config.xml的文件并保存如下内容到conf目录(也就是solrconfig.xml的目录)

       <dataConfig>
         <dataSource type="JdbcDataSource" 
                     driver="com.mysql.jdbc.Driver"
                     url="jdbc:mysql://localhost/dbname" 
                     user="user-name" 
                     password="password"/>
         <document>
           <entity name="id" 
                   query="select id,name,desc from mytable">
           </entity>
         </document>
      
       </dataConfig>
      
    3. 编辑schema.xml文件,保证文件中有'id','name','desc'等fields。并更改data-config.xml的详细信息。

    4. 将JDBC的jar驱动文件放到/lib文件夹中(tomcat/webapps/solr/WEB-INF/lib)

    5. 运行命令 http://solr-host:port/solr/dataimport?command=full-import进行全量索引,每次进行全量索引时,会将数据清空,如果不想清空需要添加clean=false。例如http://solr-host:port/solr/dataimport?command=full-import&clean=false

    在字段名和field明不同的时候添加索引

    1. 修改data-config.xml,如下所示

       <dataConfig>
         <dataSource type="JdbcDataSource" 
                     driver="com.mysql.jdbc.Driver"
                     url="jdbc:mysql://localhost/dbname" 
                     user="user-name" 
                     password="password"/>
         <document>
           <entity name="id" 
                   query="select id,name,desc from mytable">
              <field column="id" name="solr_id"/>
              <field column="name" name="solr_name"/>
              <field column="desc" name="solr_desc"/>
           </entity>
         </document>
       </dataConfig>
      
    2. 写入solr的字段为'solr_id', 'solr_name', solr_desc'。所以schema.xml中必须要要这几个field。

    3. 运行 http://solr-host:port/dataimpor?command=full-import 建立索引

    配置多个表建立索引

    1. 修改data-config如下:

       <dataConfig>
         <dataSource type="JdbcDataSource" 
                     driver="com.mysql.jdbc.Driver"
                     url="jdbc:mysql://localhost/dbname" 
                     user="user-name" 
                     password="password"/>
         <document>
           <entity name="outer" 
                   query="select id,name,desc from mytable">
              <field column="id" name="solr_id"/>
              <field column="name" name="solr_name"/>
              <field column="desc" name="solr_desc"/>
              <entity name="inner"
                      query="select details from another_table where id ='${outer.id}'">
                     <field column="details" name="solr_details"/> 
              </entity>
           </entity>
         </document>
       </dataConfig>
      
    2. schema.xml应该包含solr_details的字段

    3. 运行full-import

    mysql配置

    1. 下载mysql的JDBC的jar,并拷贝到/lib的文件夹

    2. 修改data-config为如下

       <dataConfig>
       <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"    
          url="jdbc:mysql://ip:3306/dbname"    
          user="username"    
          password="password"/> 
           <document name="products">
               <entity  
                   ......
               </entity>
      
      
               
           </document>
       </dataConfig>
      

    DataImportHandler支持的命令

    abort          http://<host>:<port>/solr/dataimport?command=abort          终止命令
    delta-import   http://<host>:<port>/solr/dataimport?command=delta-import   增量
    full-import    http://<host>:<port>/solr/dataimport?command=full-import    全量
    reload-config  http://<host>:<port>/solr/dataimport?command=reload-config  重新加载配置
    status         http://<host>:<port>/solr/dataimport?command=status         状态查询  
    
  • 相关阅读:
    Android Studio打开出现:Default activity not found
    关于LayoutInflater的错误用法(警告提示:Avoid passing null as the view root)
    获取屏幕的宽和高-Display中getHeight()和getWidth() 官方已废弃
    setUserVisibleHint-- fragment真正的onResume和onPause方法
    Fragment的setUserVisibleHint方法实现懒加载,但setUserVisibleHint 不起作用?
    Android权限判断checkPermission
    Android:安装时提示:INSTALL_FAILED_INSUFFICIENT_STORAGE
    Android M新的运行时权限开发者需要知道的一切
    Android开发——Android M(6.0) 权限解决方案
    三个案例带你看懂LayoutInflater中inflate方法两个参数和三个参数的区别
  • 原文地址:https://www.cnblogs.com/ac1985482/p/4108303.html
Copyright © 2020-2023  润新知