Solr简介和使用(二期)

Posted 数据轩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solr简介和使用(二期)相关的知识,希望对你有一定的参考价值。



导 语


在一二章中,我们主要对Solr简介和全文检索做基本的原理详解,小伙伴们可点击下方蓝字进行回顾哦~

本期我们将主要分享Solr的下载、安装、及配置等。



Solr的安装及配置

3.1  Solr的下载



3.2  Solr集成tomcat

(1) 把solr5.5目录下的server/solr-webapp/webapp 重命名为solr,并且放置到tomcat/webapp的目录下。 

(2) 打开tomcat/webapp/solr/WEB-INF/web.xml

(3) 新建一个文件夹,不要中文目录,用来做solrHome,也就是solrCore的实例存放位置

Solr简介和使用(二期)

(5) 在tomcat/webapp/solr/WEB-INF/文件夹中,建立classes目录

(6) 把solr5.5/server/resource/log4j.properties 复制到上一步建立的classes目录中

(7) 把solr5.5/server/lib/ext/目录下的所有jar文件复制到tomcat/webapp/solr/WEB-INF/lib/中,这是一些日志用的jar包,不然启动报错。

(8) 这个时候,可以输入http://127.0.0.1:8080/solr/admin.html来访问到solr的控制界面了。

(9) 接下来就是创建solrCore。

(10) 目前solrHome目录是空的,我们创建一个空文件夹core1,这个就是我们的一个实例,然后把solr5.5/server/solr/configsets/sample_techproducts_configs/conf/ 这个文件复制到solrHome/core1中。

(11) 把solr5.5/server/solr/solr.xml复制到solrHome目录下。

(12) 在solr的管理控制台界面,添加一个core1


Solr简介和使用(二期)


(13)这下就创建成功了一个实例core1,yge 请注意我打码的部分,需要先执行第11步操作,否则的话,会无法创建solr core。


3.3  安装ik中文分词器


(1) 准备好ik分词器的jar包,可以自己编译,也可以下载我生成的。然后把它复制到tomcat/webapp/solr/WEB-INF/lib里面。(千万不要复制到tomcat/lib中,这样会找不到lucene的类)

(2) 打开solrHome/core1/conf/managed-schema文件,在最下方,追加如下配置


    <fieldType name="text_ik" class="solr.TextField">

        <analyzer type="index" useSmart="false"

            class="org.wltea.analyzer.lucene.IKAnalyzer" />

        <analyzer type="query" useSmart="true"

            class="org.wltea.analyzer.lucene.IKAnalyzer" />

    </fieldType>


(3) 启动tomcat,即可看到text_ik分词

Solr简介和使用(二期)

3.4  插入的文档必须与域相匹配


域,我个人也称它为字段,它在solr中有特定的含义,就类似数据库中表的列一样,规范着写入的数据,我们先来做个例子。


Solr简介和使用(二期)


可以看到,我这次插入的文档,有id,title当然,在solr中,每一条记录都必须有着一个唯一的id,它就类似数据库中的主键,不可重复。这条记录的插入是成功的。

但是,如果我把title改成title1,这就与定义的字段不一样了,就会报错,如下图所示


Solr简介和使用(二期)

可以看到,这里提示,未知的字段 title1.


3.5  域的定义 field 


先拿出一条配置来看一下

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

认识一下这些属性:

  • name:域名

  • type:域的类型,必须匹配类型,不然会报错

  • indexed:是否要作索引

  • stored:是否要存储

  • required:是否必填,一般只有id才会设置


3.6  配置动态域 dynamicField


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

何谓动态域呢?就是这个域的名称,是由表达式组成的,只要名称满足了这个 表达式,就可以用这个域

 同样的认识一下这些属性:

  • name:域的名称,该域的名称是通过一个表达式来指定的,只要符合这这个规则,就可以使用这个域。比如  aa_i,bb_i,13_i等等,只要满足这个表达式皆可

  • type:对应的值类型,相应的值必须满足这个类型,不然就会报错

  • indexed:是否要索引

  • stored:是否要存储

  • 其它的属性与普通的域一至


3.7 主键域uniqueKey


给出一条配置

 <uniqueKey>id</uniqueKey>

指定一个唯一的主键,每一个文档中,都应该有一个唯一的主键,这个值不要随便改


3.8  复制域 copyField


给出一条配置

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

说明一下相应的属性

  • source:源域

  • dest:目标域

复制域,将源域的内容复制到目标域中

注意:目标域必须是允许多值的,如下,nultiValued必须为true,因为可能多个源域对应一个目标域,所以它需要以数组来存储

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


Solr简介和使用(二期)

END

数据轩

关于大数据的“术、道、势”

科技|应用|趋势

以上是关于Solr简介和使用(二期)的主要内容,如果未能解决你的问题,请参考以下文章

Solr——简介和安装配置

solr基础知识简介

Solr09-SolrJ的简介和使用

搜索引擎solr简介

08.Solr简介

Apache Solr学习 第一篇 简介和安装环境准备