solr实战入门1将sql文件通过Dataimport导入solr索引库

1.添加相应的jar包

将solr初始服务器中dist下面的jar和mysql的jar包复制到

tomcat服务器D:\solr\apache-tomcat-8.5.42\webapps\solr\WEB-INF\lib中

  • 配置solr找到自带的中文分词器jar包导入D:\solr\apache-tomcat-8.5.42\webapps\solr\WEB-INF\lib中

2.配置中文分词器

修改D:\solr\solrhome\core_demo\conf文件夹下面的managed-schema文件

     <!-- ChineseAnalyzer -->
     <fieldType name="solr_cnAnalyzer" class="solr.TextField" positionIncrementGap="100">
       <analyzer type="index">
         <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
       </analyzer>
     </fieldType>

复制到该文件的最下面 重新启动服务器,可以在分词器页面中找到该分词器

  • managed-schema文件介绍

1.域的配置

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

name:指定域    这个名称是唯一的

type :域类型 

indexed是否索引 

stored是否储存  

required是否必须

multiValued: 是否多字段 ,比如我们要是想查询的字段包括标题和其中的内容时,可以设置为true

2.域的唯一标识

<uniqueKey>id</uniqueKey>

表示文档的唯一域的标识 (相当于数据库表中的主键)

3.复制域的配置

   <copyField source="cat" dest="text"/>
   <copyField source="name" dest="text"/>
   <copyField source="manu" dest="text"/>

比如我们在搜索时输入一个java,一篇文章分为标题,简介,内容等多个字段,输入的关键字 需要在solr的域中记性域的检索,不可能从一个表中将所有的字段进行检索,因为有些字段不需要索引,所以就出现了复制域,把多个域的关键词复制到同一个域,多个域时,可以放到同一个域中,就不用定义那么多的域了。方便搜索。

4.动态域

<dynamicField name="*_i"  type="pint"    indexed="true"  stored="true"/>

如果命名的是符合动态配合规则,就回去找普通域的规则

  • 域的类型

3.修改solrconfig.xml文件

1.D:\solr\solrhome\core_demo\conf文件下面修改该文件

在720行添加数据库配置

    <!--添加导入配置-->
  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
        <str name="config">data-config.xml</str>
    </lst>
  </requestHandler>

其中data-config.xml文件名自定义

2.D:\solr\solrhome\core_demo\conf文件夹下创建data-config.xml配置文件

添加 如下类容

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
    <dataSource
    type="JdbcDataSource"
    driver="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/solr"
    user="root"
    password="123456" />
    <document>
        <entity name="haLock" query="select * from joke" deltaQuery="select * from joke">
            <field column="id" name="id" />
            <field column="title" name="title" />
            <field column="info" name="info" />
        </entity>
    </document>
</dataConfig>

3.回到在managed-schema中配置相应的域,field

     <!--自定义的域-->
     <field name="info" type="solr_cnAnalyzer" indexed="true" stored="true"/>
     <field name="title1" type="solr_cnAnalyzer" indexed="true" stored="true"/>

对相应的域进行映射,可以通过复制域的方式合成一个新的域,这样不管是标题中含有对应信息还是内容中含有对应信息,都可以被查询出来。

4.通过Dataimport进行数据的导入并且测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值