Solr4从XML导入数据

白编辑了....cnblogs怎么也没给我保存个 草稿....化繁为简,你照着我的做就ok了

lib什么的记得,去E:\solrbase\distE:\solrbase\lib\ext下面找  然后拷贝到你的tomcat的lib下

总共编辑的3个文件,这三个都在你Solr示例的\solr\collection1\conf下..

solrconfig.xml

schema.xml

xml-data-config.xml

下面贴文件内容了

schema.xml,定义你导入的业务数据的定义,类似数据库的表

<?xml version="1.0" encoding="UTF-8" ?>
<schema name="example" version="1.5">

    <fields>

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

        <field name="image" type="string" indexed="false" stored="true" />
        <field name="value" type="double" indexed="false" stored="true" />

        <field name="price" type="double" indexed="true" stored="true" />
        <field name="rebate" type="double" indexed="true" stored="true" />

        <field name="bought" type="long" indexed="true" stored="true" />

        <field name="city" type="string" indexed="true" stored="true" />
        <field name="sort" type="string" indexed="true" stored="true" />

        <field name="loc" type="string" indexed="true" stored="true" />

        <field name="startTime" type="date" indexed="true" stored="true" />
        <field name="endTime" type="date" indexed="true" stored="true" />

        <!-- catchall field, containing all other searchable text fields (implemented
            via copyField further on in this schema -->
        <field name="text" type="text_general" indexed="true" stored="false"
            multiValued="true" />

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

    </fields>

    <uniqueKey>id</uniqueKey>

    <copyField source="title" dest="text" />

    <types>

        <fieldType name="string" class="solr.StrField"
            sortMissingLast="true" />

        <!-- boolean type: "true" or "false" -->
        <fieldType name="boolean" class="solr.BoolField"
            sortMissingLast="true" />

        <fieldType name="int" class="solr.TrieIntField"
            precisionStep="0" positionIncrementGap="0" />
        <fieldType name="float" class="solr.TrieFloatField"
            precisionStep="0" positionIncrementGap="0" />
        <fieldType name="long" class="solr.TrieLongField"
            precisionStep="0" positionIncrementGap="0" />
        <fieldType name="double" class="solr.TrieDoubleField"
            precisionStep="0" positionIncrementGap="0" />

        <fieldType name="tint" class="solr.TrieIntField"
            precisionStep="8" positionIncrementGap="0" />
        <fieldType name="tfloat" class="solr.TrieFloatField"
            precisionStep="8" positionIncrementGap="0" />
        <fieldType name="tlong" class="solr.TrieLongField"
            precisionStep="8" positionIncrementGap="0" />
        <fieldType name="tdouble" class="solr.TrieDoubleField"
            precisionStep="8" positionIncrementGap="0" />

        <fieldType name="date" class="solr.TrieDateField"
            precisionStep="0" positionIncrementGap="0" />
        <fieldType name="tdate" class="solr.TrieDateField"
            precisionStep="6" positionIncrementGap="0" />

        <fieldtype name="binary" class="solr.BinaryField" />
        <fieldType name="pint" class="solr.IntField" />
        <fieldType name="plong" class="solr.LongField" />
        <fieldType name="pfloat" class="solr.FloatField" />
        <fieldType name="pdouble" class="solr.DoubleField" />
        <fieldType name="pdate" class="solr.DateField"
            sortMissingLast="true" />
        <fieldType name="random" class="solr.RandomSortField"
            indexed="true" />

        <fieldType name="text_ws" class="solr.TextField"
            positionIncrementGap="100">
            <analyzer>
                <tokenizer class="solr.WhitespaceTokenizerFactory" />
            </analyzer>
        </fieldType>

        <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>

        <!-- CJK bigram (see text_ja for a Japanese configuration using morphological
            analysis) -->
        <fieldType name="text_cjk" class="solr.TextField"
            positionIncrementGap="100">
            <analyzer>
                <tokenizer class="solr.StandardTokenizerFactory" />
                <!-- normalize width before bigram, as e.g. half-width dakuten combine -->
                <filter class="solr.CJKWidthFilterFactory" />
                <!-- for any non-CJK -->
                <filter class="solr.LowerCaseFilterFactory" />
                <filter class="solr.CJKBigramFilterFactory" />
            </analyzer>
        </fieldType>

    </types>
</schema>

solrconfig.xml,添加个

requestHandler name="/dataimport

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

xml-data-config.xml,一个建立Solr和xml内容之间的桥梁

<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.demo.tuan.DateUtils.format(row.get(‘startTime‘)));
                    row.put(‘endTime‘, com.demo.tuan.DateUtils.format(row.get(‘endTime‘)));
                    row.put(‘rebate‘, row.get(‘rebate‘).replace(‘折‘,‘‘));
                    return row;
                }
        ]]>
    </script>
    <dataSource type="FileDataSource" encoding="UTF-8" />
    <document>
        <entity name="collection1" pk="loc"
            url="D:/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>

-----OVER------

时间: 2024-10-06 13:32:33

Solr4从XML导入数据的相关文章

R语言XML格式数据导入与处理

数据解析 XML是一种可扩展标记语言,它被设计用来传输和存储数据.XML是各种应用程序之间进行数据传输的最常用的工具.它与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引.排序.查找.相关一致性等,它仅仅是存储数据.事实上它与其他数据表现形式最大的不同是:它极其简单,这是一个看上去有点琐细的优点,但正是这点使它与众不同. 针对XML格式数据,R语言XML包可以对其进行数据导入与处理,详见下面的案例说明. 案例1 直接输入一段标

solr4从mysql数据库中导入数据

实际项目中,我们需要把已存在于数据库中的数据导入到solr索引库中,solr给我们提供了一个非常简便的方式DIH,下面我们以mysql数据为例. 1.进入你的core(如collection1),新建一个目录lib. 2.拷贝mysql-connector-java-5.1.14.jar到新建的lib目录中. 3.从solr的解压文件目录中找到“E:\solrbase\example-DIH\solr\db\conf”下的db-data-config.xml文件到你的core(如collecti

solr连接数据库导入数据

本文简单讲诉 solr建立全文索引,从数据库导入数据,生成索引文件,本文建立在已经搭建好solr应用的情况下,如要了解如何部署solr服务可先看上一文:solr 安装 环境:jdk 7,solr4.10.1 ,tomcat 7 附:参考文档地址:http://wiki.apache.org/solr/DataImportHandler 1,首先在solrconfig.xml中引入dataimport 路径 : E:\solr\example\solr\collection1\conf <requ

solr搜索之mysql导入数据到solr(四)

1      mysql导入数据到solr 方式一:创建项目,查询出数据,一条一条add到solr中:(不推荐) 方式二:通过配置复制数据到solr中 以上已完成了在本地window8中对solr的部署,为solr添加了一个自定义的coredemo,并且引入了ik分词器. 那么该如何将本地的mysql的数据导入到solr中呢? 1.1    准备工作 1.1.1     准备数据源 mysql数据源:test库中的user表(7条数据),其中这个update_time字段是用于solr更新数据库

多表利用DIH批量导入数据并建立索引注意事项

如果希望同时对多个表进行全文检索,那我们该如何处理呢?利用DIH导入数据并建立索引时.schema.xml中配置了uniqueKey为id <uniqueKey>id</uniqueKey> 如果多表主键都为id的话索引会被覆盖 <!--deltaImportQuery和deltaQuery为增量导入时使用.--> <entity name="case" pk="id" query="SELECT id,title

solr6.6教程-从mysql数据库中导入数据(三)

整理多半天的solr6.6,终于算是把solr6.6中配置数据库弄出来了,网上的文章千篇一律,各说个的,没有一篇统一覆盖solr6.6版本配置的 帖子,本章节我会把配置的一些注意事项一一列举,由于时间原因,本片只介绍如何一次性导入数据,不附带增量导入,想看增量的同学可以在后面的文章中. 1,配置准备 本文的前提是你已经配置好了solr,并新创建了一个core,我们下面都会按照前一篇文章中的core_demo为基础开始 2,修改soreconfig.xml 在soreconfig.xml的<req

iOS dom解析xml格式数据

问题描述:接口返回的是xml格式数据,而且节点名居然都是相同的,采用了dom解析最终解决 一.文件导入 1.下载GDataXMLNode.h 和 GDataXMLNode.m文件,导入工程(csdn文件下载链接:http://download.csdn.net/detail/wusangtongxue/9502292) 2.配置环境: (1)改成ARC环境(-fno-objc-arc): (2)找到“Paths\Header Search Paths”项,并添加“/usr/include/lib

C# XML导入数据库

using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace XML { class Program { static void Main(string[] args

android 导入数据(通讯录)

接着android 中导出数据 一文,下面介绍在android中导入数据的思路: 1.将数据从文本中读取出来 2.封装处理成自己想要的对象或模型 3.将处理好的数据对象插入自己应用的数据库中 4.更新UI显示 下面仍以导入联系人至系统中为例,若是导入自己的应用中,思路一样甚至更简单,代码如下: 注:我的联系人.txt的格式即为android 中导出数据 一文生成的格式 MainActivity: 1 package com.home.impcontact; 2 3 import java.io.