从sqlserver导入数据到solr, solr 采用的版本6.0.1,并且本机解压到:F:\Tool\solr-6.0.1;
1. 命令启动solr,创建core
启动,进入solr文件目录下,执行:bin\solr start -p 8984
创建core,执行:bin\solr create -c postcore
检查是否创建成功:http://127.0.0.1:8984/solr
2. jar包添加,下载地址 https://gist.github.com/maxivak/3e3ee1fca32f3949f052
下载jar包 sqljdbc4.jar , 并且复制到 F:\Tool\solr-6.0.1\server\solr-webapp\webapp\WEB-INF\lib 将solr-dataimporthandler-6.0.1.jar、solr-dataimporthandler-extras-6.0.1.jar复制到lib下面,这两个文件位置: F:\Tool\solr-6.0.1\dist 复制到 F:\Tool\solr-6.0.1\server\solr-webapp\webapp\WEB-INF\lib 采用mmseg4j作为中文分词,下载mmseg4j-solr-2.3.0.jar、mmseg4j-core-1.10.0.jar ,并且复制到: F:\Tool\solr-6.0.1\server\solr-webapp\webapp\WEB-INF\lib3. 编辑solrconfig文件,添加dataimport
路径: F:\Tool\solr-6.0.1\server\solr\postcore\conf 添加文本: <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>4. 编辑data-config.xml
路径,如果不存在data-config.xml则创建 F:\Tool\solr-6.0.1\server\solr\postcore\conf 添加文本,deltalImportQuery:增量操作,deltaQuery: 删除操作,对于其它字段所代表的意义简单,就不多做解释; <?xml version="1.0" encoding="UTF-8" ?> <dataConfig> <dataSource type="JdbcDataSource" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://127.0.0.1; databaseName=postdb" user="sa" password="123456"/> <document> <entity name="post" pk="id" query="SELECT TOP 1000 [id],[type],[isdel],[msg],[createUser],[createTime] FROM [postdb].[dbo].[post]" deltalImportQuery="SELECT TOP 1000 [id],[type],[isdel],[msg],[createUser],[createTime] FROM [postdb].[dbo].[post] where id='${dih.delta.id}'" deltaQuery ="select id from [postdb].[dbo].[post] where updated_ad>'${dih.last_index_time}'"> <field column="id" name="id" /> <field column="type" name="type" /> <field column="isdel" name="isdel" /> <field column="msg" name="msg" /> <field column="createUser" name="createUser" /> <field column="createTime" name="createTime" /> </entity> </document> </dataConfig>
5. 编辑managed-schema文件,solr6.0.1 没有schema.xml文件
打开managed-schema文件路径,路径: F:\Tool\solr-6.0.1\server\solr\postcore\conf 配置分词 <fieldtype name="textComplex" class="solr.TextField" positionIncrementGap="100" multiValued="true"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex"/> </analyzer> </fieldtype> <fieldtype name="textMaxWord" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" /> </analyzer> </fieldtype> <fieldtype name="textSimple" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" /> </analyzer> </fieldtype> 配置field <field name="allmm" type="textComplex" multiValued="true" indexed="true" required="false" stored="false" /> <field name="type" type="int" indexed="true" stored="true" required="false" /> <field name="isDel" type="boolean" indexed="true" stored="true" required="false" /> <field name="msg" type="textComplex" indexed="true" stored="true" required="false" /> <field name="createUser" type="textComplex" indexed="true" stored="true" required="false" /> <field name="createTime" type="date" indexed="true" stored="true" required="false" /> <copyField source="msg" dest="allmm" /> <copyFiled source="createUser" dest="allmm" /> <defaultSearchField>allmm</defaultSearchField> <solrQueryParser defaultOperator="OR"/>
6. 重启solr服务
F:\Tool\solr-6.0.1>bin\solr restart -p 89847. 执行导入,点击 execute 按钮,全量导入;点击refresh Status按钮查看执行状态
9. 测试分词:可以看到在allmm,分词分为哪些,然后就可以根据这些分词进行查询;
10. 查询:关键字:“国家电网”,可以查询到数据,如果关键字是 “国家”,就不会查询到数据,这个是分词导致的
至此sqlserver 导入数据到solr,基本完成。
转载于:https://www.cnblogs.com/tobyyang/p/5688386.html
相关资源:solr导入数据必备jar包