Solr DIH dataconfig配置

1.

配置文件data-config.xml定义了数据库的基本配置,以及导出数据的映射规则,即导出数据库表中对应哪些字段的值,以及对特定字段的值做如何处理

</pre><p><pre name="code" class="html"><dataConfig>
    <dataSource name="jdbc" driver="com.mysql.jdbc.Driver"
        url="jdbc:mysql://172.0.8.249:5606/marketing_db_saved?zeroDateTimeBehavior=convertToNull"
        user="developer" password="[email protected]" />
    <document name="mkt_data">
        <entity name="marketing_data" pk="id"
            query="select * from marketing_data where id between ${dataimporter.request.offset} and ${dataimporter.request.offset}+1000000"
            deltaQuery="select * from marketing_data where updated_at > ‘${dih.last_index_time}‘"
            transformer="RegexTransformer">
            <field column="id" name="id" />
            <field column="domain" name="domain" />
            <field column="alex_rank" name="alex_rank" />
            <field column="server_port" name="server_port" />
            <field column="cert_validity_notBefore" name="cert_validity_notBefore" />
            <field column="cert_validity_notAfter" />
            <field column="cert_validity_notAfter_yyyyMMdd" regex="(.*?)\s+.*"
                name="cert_validity_notAfter_yyyyMMdd" sourceColName="cert_validity_notAfter" />
            <field column="cert_issuer_brand" name="cert_issuer_brand" />
            <field column="cert_validation" name="cert_validation" />
            <field column="cert_isMultiDomain" name="cert_isMultiDomain" />
            <field column="cert_issuer_brand_isXRelated" name="cert_issuer_brand_isXRelated" />
            <field column="cert_isWildcard" name="cert_isWildcard" />
            <field column="cert_notAfter" name="cert_notAfter" />
            <field column="special_ssl" name="special_ssl" />
            <field column="competitor_logo" name="competitor_logo" />
            <field column="segment" name="segment" />
        </entity>
    </document>
</dataConfig>

Solr的DIH暴露了请求中传递的变量 ${dataimporter.request.offset},也就是在请求的requestHandler中可以附带附加属性条件,例如,下面请求URL中的offset=5000000参数:

http://172.0.8.212:8080/seaarch-server/core0/dataimport?command=full-import&offset=5000000

另外,还有一个参数是很重要的,它决定着是否清除已经存在的索引数据,默认为clean=true,如果不想删除以前的索引数据,一定要在请求的URL中指定该属性为false,请求URL如下:

http://172.0.8.212:8080/seaarch-server/core0/dataimport?command=full-import&offset=5000000&clean=false

另外,索引完成后一半需要执行commit操作,将内存中索引数据持久化到文件系统,防止改变丢失,所以需要在请求的URL中增加commit=true,例如:

http://172.0.8.212:8080/seaarch-server/core0/dataimport?command=full-import&offset=5000000&clean=false&commit=true

2.

<dataConfig>
    <dataSource type="FileDataSource" encoding="UTF-8" />
    <entity name="xml_stories" rootEntity="false" dataSource="null"
        processor="FileListEntityProcessor" fileName="legacy_stories.*\.xml$"
        recursive="false" baseDir="/usr/local/extracts"
        newerThan="${dataimporter.xml_stories.last_index_time}">
        <entity name="stories" pk="id" dataSource="xml_stories"
            processor="XPathEntityProcessor" url="${xml_stories.fileAbsolutePath}"
            forEach="/RECORDS/RECORD" stream="true"

            transformer="DateFormatTransformer,HTMLStripTransformer,RegexTransformer,TemplateTransformer"
            onError="continue">
            <field column="_modified_date"
                xpath="/RECORDS/RECORD/PROP[@NAME=‘R_ModifiedTime‘]/PVAL" />
            <field column="modified_date" sourceColName="_modified_date"
                dateTimeFormat="yyyy-MM-dd‘T‘hh:mm:ss‘Z‘" />

            <field column="_df_date_published" xpath="/RECORDS/RECORD/PROP[@NAME=‘R_StoryDate‘]/PVAL" />
            <field column="df_date_published" sourceColName="_df_date_published"
                dateTimeFormat="yyyy-MM-dd‘T‘hh:mm:ss‘Z‘" />

            <field column="sort_date_modified" sourceColName="modified_date"
                dateTimeFormat="yyyyMMddhhmmss" />
            <field column="sort_date_published" sourceColName="df_date_published"
                dateTimeFormat="yyyyMMddhhmmss" />
        </entity>
    </entity>
</document>
</dataConfig>

3.

数据源:

<?xml version="1.0" encoding="utf-8"?>
<urlset>
    <url>
        <loc>http://nn.meituan.com/deal/527742.html?source=hao123</loc>
        <data>
            <display>
                <website>美团网</website>
                <siteurl>http://nn.meituan.com</siteurl>
                <city>南宁</city>
                <sort>餐饮美食</sort>
                <title>【朝阳】比巴卜自助烤涮餐厅单人自助晚餐1次,无需预约,节假日通用</title>
                <image>http://p0.meituan.net/275.168/deal/201211/19/1111_1119205421.jpg</image>
                <startTime>1353513600</startTime>
                <endTime>1414476000</endTime>
                <value>59</value>
                <price>50.00</price>
                <rebate>8.5折</rebate>
                <bought>42573</bought>
                <spend_start_time>1353513600</spend_start_time>
                <spend_close_time>1414511999</spend_close_time>
                <longitude>108.321188</longitude>
                <latitude>22.816958</latitude>
                <collections>0</collections>
                <type>1</type>
                <soldout>no</soldout>
            </display>
        </data>
    </url>
</urlset>

配置:

<dataConfig>
    <script><![CDATA[
                function ReplaceLocAddId(row)    {
                    var loc_1 = row.get(‘loc‘).split(‘/deal/‘);
                    var loc_2 = loc_1[1].split(‘.html‘);
                    var id = loc_2[0];
                    row.put(‘id‘, id);
                    //格式化时间.
                    //var sdf = new java.text.SimpleDateFormat(‘yyyy-MM-dd HH:mm:ss‘);
                    //开始时间.
                    row.put(‘startTime‘, com.sitech.util.DateUtils.parseMT(row.get(‘startTime‘),null));
                    //结束时间.
                       row.put(‘endTime‘, com.sitech.util.DateUtils.parseMT(row.get(‘endTime‘),null));
                    //去掉折扣汉字.
                    row.put(‘rebate‘, row.get(‘rebate‘).replace(‘折‘,‘‘));

                    return row;
                }
        ]]></script>
    <dataSource type="FileDataSource" encoding="utf-8" />
    <document>
        <entity name="tuan" pk="loc" url="D:/solr/source_data/meituan_hao123.xml"
            processor="XPathEntityProcessor" forEach="/urlset/url"
            transformer="script:ReplaceLocAddId,DateFormatTransformer">
            <field column="loc" xpath="/urlset/url/loc" commonField="true" />
            <field column="city" xpath="/urlset/url/data/display/city"
                commonField="true" />
            <field column="sort" xpath="/urlset/url/data/display/sort"
                commonField="true" />
            <field column="title" xpath="/urlset/url/data/display/title"
                commonField="true" />
            <field column="image" xpath="/urlset/url/data/display/image"
                commonField="true" />
            <field column="value" xpath="/urlset/url/data/display/value"
                commonField="true" />
            <field column="price" xpath="/urlset/url/data/display/price"
                commonField="true" />
            <field column="rebate" xpath="/urlset/url/data/display/rebate"
                commonField="true" />
            <field column="bought" xpath="/urlset/url/data/display/bought"
                commonField="true" />
            <field column="startTime" xpath="/urlset/url/data/display/startTime"
                dateTimeFormat="yyyy-MM-dd HH:mm:ss" commonField="true" />
            <field column="endTime" xpath="/urlset/url/data/display/endTime"
                dateTimeFormat="yyyy-MM-dd HH:mm:ss" commonField="true" />
        </entity>
    </document>
</dataConfig>

4、从oracle抽取数据建立索引

<dataConfig>
<dataSource name="jdbc" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1522:ORCLLI"        user="root" password="root"/>
    <document>
        <entity name="tm_details" query="select t.docid as id,t.tempid,t.cruser as userid,t.crtime,t.A_GZMC||t.A_XXMS||t.A_ZZPZZY as content from TM_DETAILS t  where t.type=2 "
            transformer="ClobTransformer,HTMLStripTransformer,RegexTransformer,DateFormatTransformer">
            <field column="ID" name="id" />
            <field column="TEMPID" name="tempid" />
            <entity name="template" query="select te.name from kmstemplate  te where te.id=${tm_details.TEMPID}">
                <field column="NAME" name="template"/>
            </entity>
            <entity   name="user" query="select msg.name  from tb_sys_loginmsg msg where msg.login_id=‘${tm_details.USERID}‘" >
                <field column="NAME" name="cruser"/>
            </entity>
            <field column="CRTIME" name="crtime"  dateTimeFormat="yyyy-MM-dd HH:mm:ss"/>
            <entity name="doc" query="select rtrim(d.doctitle,‘.htm‘) as title  from kmsdocument d where d.docid=${tm_details.ID}">
                <field column="TITLE" name="title" clob="true"/>
            </entity>
            <field column="CONTENT" name="content"  clob="true"  stripHTML="true" regex="\\t|\r|\n"
            replaceWith=""/>
        </entity>
    </document>
</dataConfig>
<dataConfig>
<dataSource name="jdbc" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@172.21.144.200:1522:ORCLLI"        user="kms_user_js" password="kms_user_js"/>
    <document>
        <entity name="taocan" query="select t.docid||‘e‘||t.eid||‘o‘||t.ordernum||‘n‘||t.numgroup as id ,t.tempid,t.cruser as userid,t.crtime,t.faq_wt2 as title,da.faq_da2 as content  from TM_DETAILS_LIST_FAQ_WT t  join  TM_DETAILS_LIST_FAQ_DA da on  t.docid=da.docid and t.ordernum=da.ordernum and t.numgroup=da.numgroup and t.eid=da.eid"
            transformer="ClobTransformer,DateFormatTransformer">
            <field column="ID" name="id" />
            <entity name="template" query="select te.name from kmstemplate  te where te.id=${taocan.TEMPID}">
                <field column="NAME" name="template"/>
            </entity>
            <entity   name="user" query="select msg.name  from tb_sys_loginmsg msg where msg.login_id=‘${taocan.USERID}‘" >
                <field column="NAME" name="cruser"/>
            </entity>
            <field column="CRTIME" name="crtime"  dateTimeFormat="yyyy-MM-dd HH:mm:ss"/>
            <field column="TITLE" name="title" clob="true"/>
            <field column="CONTENT" name="content"  clob="true"/>
        </entity>
    </document>
</dataConfig>
时间: 2024-10-12 21:25:44

Solr DIH dataconfig配置的相关文章

Solr多核的配置

Solr 多核(MultiCore)配置 Solr Multicore意义 Solr Multicore 是 solr 1.3 的新特性.其目的一个solr实例,可以有多个搜索应用.< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" /> 我们既可以把不同类型的数据放到同一index中,也可以使用分开的多indexes.基于这一点,你只需知道如何使用多 inde

Solr安装与配置(windows)

Solr 简介: Solr是一种开源的,基于Lucence Java的搜索引擎服务器.Solr对Lucence进行扩展,提供了比Lucence 更丰富的查询语言,Sorl基本上沿用了Lucence的相关术语.Solr创建的搜索引擎与Lucence搜索引擎库完全兼容.Sorl提供了层面搜索.命中醒目显示并支持多种输入格式(XML/XSL T和JSON格式).易于于安装配置,附带了一个基于HTTP的管理界面.Solr已经较为稳定,在很多大型网站中使用,是一款非常优秀的全文搜索引擎.此外,很多 Luc

Solr6 +mmseg4j+IK-Analyzer + SQLserver +DIH 完全配置

如今做任何一个系统都有搜索,而搜索界有著名的三剑客: solr/elasticsearch/sphinx solr/elasticsearch 为同一类的,都是基于lucene开发的产品,本人也早在几年前用过solr做过类似中关村的产品搜索,faceting功能非常好用. 近期手头上又有个项目要搭建搜索,由于几年没摸过Solr,如今再次打开官网已觉得很陌生,不仅主页换漂亮了,版本更是到了6.1 ,还有了 solr cloud的概念!! 废话不多说,首先来介绍下环境配置: 1. 去 http://

Solr DIH导入出现 Data Config problem: 前言中不允许有内容 异常

Solr配置DIH导入时出现 “Data Config problem: 前言中不允许有内容.” 异常. <response> <lst name="responseHeader"> <int name="status">500</int> <int name="QTime">120</int> </lst> <lst name="initArgs

Solr DIH以Mysql为数据源批量创建索引

演示使用solr管理后台,以mysql为数据源,批量建索引的方法 测试于:Solr 4.5.1, mmseg4j 1.9.1, Jdk 1.6.0_45, Tomcat 6.0.37 | CentOS 5.7 配置数据源 [[email protected] ~]# cd /root/solr-4.5.1/example/example-DIH/solr/db/conf[[email protected] conf]# touch mysql-data-config.xml 编辑mysql-da

solr schema.xml配置

solr使用_version_来做文档的版本控制和修改时加锁(乐观锁) <field name="_version_" type="long" indexed="true" stored="true"/> indexed是否索引 只能在索引的列上进行查询 stored是否存储 只能返回存储的列 required 是否必须 multiValued 是否多值 <field name="id"

新版solr安装及配置(无*.war版本)

解压 Tomcat 到一个目录,例如 F:\Apache\Tomcat   将 solr 压缩包中 solr-5.3.0/ D:\solr-5.3.0\server\solr-webapp\文件夹下有个webapp文件夹,将之复制到Tomcat\webapps\目录下,并改成solr (名字随意,通过浏览器进行访问solr管理界面时要用到)   将 solr 压缩包中 solr-5.3.0\server\lib\ext 中的 jar 全部复制到 Tomcat\ webapps\solr\WEB-

09.Solr单机版安装配置

1.下载开发包 从Solr官方网站(http://lucene.apache.org/solr/ )下载Solr4.10.3,根据Solr的运行环境,Linux下需要下载lucene-4.10.3.tgz,windows下需要下载lucene-4.10.3.zip. 2.创建SolrHome(Solr运行的数据以及配置文件) a. 创建SolrHome目录 b. 将 example\solr 内容拷贝到SolrHome下 collection1目录结构 collection1:一个SolrCor

Solr学习笔记-认识solr及安装配置

Solr(http://lucene.apache.org/solr),Apache Lucene项目的子项目,是一个基于Lucene的Java搜索引擎服务器. Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语,更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容,通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引. Solr支持从关系数据库和XML文档中提取原始数据