zoukankan      html  css  js  c++  java
  • Solr DataImportHandler 配置

    DIH主要用于从数据库抓取数据并创建索引。另外还能够从HTTP(RSS、ATOM)拉数据。


    相关概念:
    • Datasource:数据源,包含获取数据必需的信息:数据位置(url)、数据库driver、登录账号和password
    • Entity:相当于数据库的一个视图,能够从一个表或联表查询获得
    • Processor:数据处理器,负责从数据源中获取数据、处理、然后增加到索引中
    • Transformer:数据转换器,可选,负责改动数据、创建新的field、或依据须要把一条记录变成多条记录

    首先。链接数据库须要mysql connector
    下载地址:http://mvnrepository.com/搜索:mysql connector java
    点击最新版本,点击“Download ( JAR ) ”下载,或(更方便的方法)复制链接地址,然后用wget下载:
    cd /opt/app/solr/server/solr-webapp/webapp/WEB-INF/lib/
    wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar

    配置:

    solrconfig.xml中加入 requestHandler,比如:
      <requestHandler name="/dataimport" class="solr.DataImportHandler">
        <lst name="defaults">
          <str name="config">db-data-config.xml</str>
        </lst>
      </requestHandler>

    config參数指定DIH配置文件的位置。DIH配置文件负责指定数据源、拉取和处理数据的方法。


    solrconfig.xml 中加入DIH jar包依赖:
    <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*.jar" />

    DIH配置文件:
    根节点:<dataConfig>
    • dataSource
      • type: 数据源类型,如:JdbcDataSource(缺省值),採用SqlEntityProcessor
      • driver: 数据库驱动,如:com.mysql.jdbc.Driver
      • convertType: 
      • url: 数据库url
      • user: 你懂的
      • password: 你懂的
    • document
      • entity
        • name: 随便起的一个标志,能够给嵌套的entity使用。比方${item.id}(如果name="item")
        • query: 拉取全部数据的语句
        • deltaQuery: 拉取delta数据的语句,如:deltaQuery="select * from xxx where last_modified > '${dataimporter.last_index_time}'"
        • field: 指定 dataSource 的 field 和 solr 的field的相应关系,如:<field name="NAME" column="name" />
        • entity: 嵌套的entity。定义一些一对多的数据。能够使用父entity的name作为条件,比方:where item_id='${item.id}'
        • transformer: 指定transformer对象。多个的话用逗号分开

    配置文件样例文件名称:db-data-config.xml
    <dataConfig>
      <dataSource type="JdbcDataSource"
                  driver="com.mysql.jdbc.Driver"
                  convertType="true"
                  url="jdbc:mysql://127.0.0.1:3306/db_name"
                  user="sa"
                  password="123456"/>
      <document>
        <entity name="course_video" query="SELECT id, title, content, tags FROM ts_course_video" >
        </entity>
      </document>
    </dataConfig>

    须要和另外一个配置文件配合使用:schema.xml。定义了field和fieldType。參考:http://blog.csdn.net/clementad/article/details/47666043
    样例:
    <?

    xml version="1.0" encoding="UTF-8" ?> <schema name="course_video" version="1.5"> <field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" /> <field name="_version_" type="long" indexed="true" stored="true"/> <field name="title" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="tags" type="string" indexed="true" stored="false" required="false" multiValued="false" /> <field name="content" type="string" indexed="true" stored="true" required="false" multiValued="false" /> <field name="info_text" type="text_general" indexed="true" stored="false" multiValued="true" /> <copyField source="title" dest="info_text" /> <copyField source="content" dest="info_text" /> <copyField source="tags" dest="info_text" /> <uniqueKey>id</uniqueKey> <fieldType name="string" class="solr.StrField" sortMissingLast="true" /> <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> </schema>


    通过HTTP请求(POST或GET)运行各种DIH操作:
    请求格式:http://<host>:<port>/ solr/ <collect ion_name>/ dataimport? command=<command>
    当中,各种<command>例如以下:
    • abort:停止当前正在进行的操作
    • delta-import:调用deltaQuery拉取数据。

      能够带上几个额外的參数:&clean=true&commit=true等等(和full_import同样)

    • full-import:调用query拉取全部数据。

      请求会立即返回。后台有新线程运行重建索引的操作。

      能够通过status操作查询状态。

      额外參数:

      • clean:缺省为true。是否在開始重建索引前清除旧索引
      • commit:缺省为true。是否提交操作请求
      • debug:缺省为false。

        debug模式,不会commit操作。

        假设同一时候须要commit,得带上commit=true參数

      • entity:缺省为全部的entity。能够指定某一个或多个entity
      • optimize:缺省为true。是否须要在完毕操作后优化索引
    • reload-config:假设改动了配置文件,运行这个命令使它生效
    • status:返回各种统计数据、以及DIH的当前状态

    (原创文章。转载请注明转自Clement-Xu的博客)




  • 相关阅读:
    Yii2安装任务调度扩展
    分享书籍[writing idiomatic python ebook]
    python待解决问题笔记
    dojo使用笔记: 自定义ConfirmDialog
    dojo使用疑难杂症集锦
    学习"大众点评网的架构设计与实践"
    一个前端html模板处理引擎(javascript)
    日历设计之重复事件规则设计
    TCP/IP之TCP的建立与终止
    python正则表达式
  • 原文地址:https://www.cnblogs.com/llguanli/p/7028974.html
Copyright © 2011-2022 走看看