搜索为将 -- solr 6.6 从入门到进阶 (二)

前言

上一篇已经介绍了 solr 的基本操做。
传送门: 搜索为将 -- solr 入门
如今介绍如何 与数据库 整合。html

solr managed-scheme 文档

这个文档位于 solrhomenew_coreconf 下
如图所示 :
java

这个文档中能够设置一些属性,便于以后与数据库整合后,在搜索中使用。mysql

1. Field

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

Name:指定域的名称
Type:指定域的类型 -- 指定使用的分词器。
Indexed:是否索引
Stored:是否存储
Required:是否必须
multiValued:是否多值,好比商品信息中,一个商品有多张图片,一个Field像存储多个值的话,必须将multiValued设置为true。linux

2. dynamicField

动态域,经过 通配符 进行匹配sql

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

3. uniqueKey

指定惟一键shell

<uniqueKey>id</uniqueKey>

其中的id 是在 Field标签 中已经定义好的域名,并且该域要设置为 required为true
一个 schema.xml 文件中必须有且仅有一个惟一键.数据库

4. copyField

从已有的 field中直接复制属性,被复制的field 必须拥有multiValued = "true" 属性。apache

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

5. FieldType

也就是设置的 field 域的类型。经过各类分词器以及内置的类型设置。
经常使用类型都已经被设置好了,以下

若是还须要其余类型的 域 ,经过分词器设置。
能够参考我 以前的文章.
搜索为将 -- solr 入门
这里介绍了 将 smart_cn 以及 IKAnalyzer 设置为 相应的 field 域的方法.segmentfault

solr 插件 -- DataimportHandler

第一步、

将 solr/dist 目录下的 solr-dataimporthandler.jar 文件拷贝到 solrhome/contrib/dataimporthandler/lib 目录下.
将 本身准备好的 mysql 链接的 jar 包 拷贝到 solrhome/contrib/db/lib 下



这里是用 linux 创建的服务器,因此使用了 xshell 中的 xftp,帮助对文件进行管理tomcat

第二步、

进入 core 文件夹 , 分别修改 solrConfig.xml 、 managed-scheme 文档
solrConfig.xml 文档下添加相应的内容

<!-- 新建相应的 lib 标签 -->
    <lib dir="${solr.install.dir:../..}/contrib/dataimporthandler/lib" regex=".*\.jar" />
    <lib dir="${solr.install.dir:../..}/contrib/db/lib" regex=".*\.jar" />

lib 的修改原则,个人上篇文章写的很清楚,再也不阐述。

<!-- 添加相应的 requestHandler -- >
   <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
       <lst name="defaults">
           <str name="config">data-config.xml</str>
       </lst>
   </requestHandler>

managed-scheme 文档下添加 与 数据库中的文件相应的属性,以个人为例。

<!-- IKAnalyzer -->
    <fieldType name="text_ik" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
         </analyzer>
         <analyzer type="query">
            <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
        </analyzer>
    </fieldType>
 
 
    <!-- taotao_shop -->
     <field name="item_title" type="text_ik" indexed="true" stored="true"/>
     <field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
     <field name="item_price"  type="long" indexed="true" stored="true"/>
     <field name="item_image" type="string" indexed="false" stored="true" />
     <field name="item_category_name" type="string" indexed="true" stored="true" />
     <field name="item_desc" type="text_ik" indexed="true" stored="false" />
 
     <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
     <copyField source="item_title" dest="item_keywords"/>
     <copyField source="item_sell_point" dest="item_keywords"/>
     <copyField source="item_category_name" dest="item_keywords"/>
     <copyField source="item_desc" dest="item_keywords"/>

第三步、

同级目录下建立 data-config.xml 文件

在其中加入相应的内容

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
    <dataSource type="JdbcDataSource"
        driver="com.mysql.jdbc.Driver"
        url="jdbc:mysql://192.168.1.101:3306/taotao"
        user="root"
        password="1996915" />
    <document>
        <entity name="item" query="SELECT id,title,sell_point,price,image FROM tb_item">
            <field column="id" name="id"/>
            <field column="title" name="item_title"/>
            <field column="sell_point" name="item_sell_point"/>
            <field column="price" name="item_price"/>
            <field column="image" name="item_image"/>
        </entity>
    </document>
</dataConfig>

第四步、

而后打开 tomcat 。 进入网站 192.168.1.102:8080/solr/index.html,出现以下画面

按照我在图片上标明的 步骤 , 就能够达到以下的效果。

问题总结

问题:不一样服务器部属后, mysql 的访问权限设置
详情:由于个人 solr 服务器是在 虚拟机上 经过 静态ip 地址的桥接设置的,因此 IP 地址与主机的 IP 地址不一样,不能使用 localhost 做为 域名。当我使用 192.168.1.101 (注: 我主机的 IP 地址)时, mysql 的用户 root 没有相应的访问权限。如图:

解决:那么只须要从新建立一个用户,并赋予相应的权限便可。

这样,咱们就拥有了 root@% 帐户, % 表明着全部的域名。

结语

由于时间有限,先介绍到这里。
等下次有时间,将 solr 与 java 的整合,以及 solr cloud 一块儿进行总结。

stay hungry, stay foolish
与诸君共勉。
您的每一次点赞,关注都是对个人一种激励。

个人我的博客 -- killCode谢谢。

相关文章
相关标签/搜索