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的实例存放位置
(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
(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分词
3.4 插入的文档必须与域相匹配
域,我个人也称它为字段,它在solr中有特定的含义,就类似数据库中表的列一样,规范着写入的数据,我们先来做个例子。
可以看到,我这次插入的文档,有id,title当然,在solr中,每一条记录都必须有着一个唯一的id,它就类似数据库中的主键,不可重复。这条记录的插入是成功的。
但是,如果我把title改成title1,这就与定义的字段不一样了,就会报错,如下图所示
可以看到,这里提示,未知的字段 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"/>
END
数据轩
关于大数据的“术、道、势”
科技|应用|趋势
以上是关于Solr简介和使用(二期)的主要内容,如果未能解决你的问题,请参考以下文章