实际工程应用中,从数据库导出数据创建索引再常见不过了,现在实验一下从数据库导入数据创建索引。
一、版本说明
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
添加如下这段配置:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
2.2添加data-config.xml
在solrconfig.xml同一个文件夹内建立data-config.xml,其配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://localHost/MyHousekeeper"
user="sa"
password="123456"/>
<document>
<entity name="pay" query="SELECT payId,payName,payMoney,payDescription,payDatetime FROM t_pay">
<field column="payId" name="id" />
<field column="payName" name="name" />
<field column="payMoney" name="money" />
<field column="payDescription" name="description" />
<field column="payDatetime" name="datetime" />
</entity>
</document>
</dataConfig>
2.3修改schema.xml
修改这个的目的是让solr知道有哪些field,是否需要索引,是否需要在索引库中存储原文,以及field类型。在上面的sql中有很多种数据类型。
payId:整型
payName:字符型
payMoney:浮点数
payDescription:大文本
payDatetime:日期时间格式
首先在schema.xml中申明field类型,配置在<types> </types>内。下面配置的sring类型是不会做分词处理的,视为完整的一个词,text_ik是一个中文分词器ik-analyzer,专门处理中文分词。
如下:
<types>
<fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
</types>
然后申明field,field的名字应该和sql的查询结果集列名一致,如果不一致,需要在data-config.xml中entity标签中用field指明列和field的对应关系。
Field配置如下:
<fields>
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="id" type="long" indexed="true" stored="true" multiValued="false" required="true"/>
<field name="name" type="string" indexed="true" stored="true" multiValued="false" />
<field name="money" type="float" indexed="true" stored="true" multiValued="false" />
<field name="description" type="text_ik" indexed="true" stored="true" multiValued="false" />
<field name="datetime" type="date" indexed="true" stored="true" multiValued="false" />
</fields>
其中如下field是必须的,用于标记版本信息,由solr内部自己维护。
<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
分享到:
相关推荐
solr4.7从数据库导数据[归类].pdf
solr4.7从数据库导数据[参照].pdf
如何使用solr搭建服务器
适用于jdk1.6,solr4.7服务器及solr配置文件
当前的IKAnalyzer官方版在用于Solr4以上高版本时,由于没有TokenizerFactory而造成诸多不便,于是有了为Lucene/Solr 4.7重新打包的IKAnalyzer 2012 FF
apache solr guide 4.7
solr4.7+myeclipse示例包含需要的jar包 httpcore-4.3 httpmime-4.3.1 jtds-1.2.4 jul-to-slf4j-1.6.6 solr-core-4.7.0
solr4.7中文企业开发参考文档.包含了检索建议,分组查询,各个参数代表的意义详细配置
solr4.7+中文分词器IK Analyzer 2012FF_hf1相匹配,本人测试可以使用
solr7.4数据库导入,使用mysql数据库,内含solr7.4导入数据库Demo+mysql库表,外加使用IK分词器。
solr同步数据库需要jar包,多个solr同步数据库数据的jar包。压缩文件里面有说明
其他的配置文档都不是很清晰,自己配好了,写个文档放上来
使用Solr为大数据库搭建搜索引擎,内容很好的,不忽悠
在做IK分词器与solr过滤器结合是时候遇到一些问题, 在网上页找了一些jar包或者class,最后找到一个合适的源码,解决了问题。 另外根据产品需要使用了solr的WordDelimiterFilterFactory和ShingleFilterFactory。 ...
使用Solr为大数据库搭建搜索引擎,霍庆,刘培植,如今信息快速发展,数据库信息不断增多,尤其是对于中文信息,传统的数据库搜索方式(like%%)不仅效率低下,而且搜索速度极慢,此
建立结构为solr-tomcat/solr的两个文件夹(solr的HOME目录),如建在D盘根目录,d:/solr-tomcat/solr,solr-tomcat文件夹名字可任意命名,将apache-solr-3.6.0examplesolr下的所有文件及文件夹拷贝到这下面 ...
使用lucenesolr搭建Oracle数据库全文搜索服务.docx
Solr数据库插入(全量和增量)索引,全量一般用于第一次创建索引情况,批量一般更新数据部分创建索引。
通过继承Analyzer编写自定义类UseSmartIKAnalyzer和NotUseSmartIKAnalyzer,实现智能分词和最细粒度分词,支持solr4.7通过配置schema.xml实现不同的分词效果 <fieldType name="text_ik" class="solr.TextField"> ...
这个是传智播客32期所用的数据库文件,