Solr多核心及分词器(IK)配置
Solr多核心及分词器(IK)配置
多核心的概念
多核心说白了就是多索引库。也可以理解为多个"数据库表"
说一下使用multicore的真实场景,比若说,产品搜索和会员信息搜索,不使用多核也没问题,这样带来的问题是 indexs文件很多,而且产品的索引文件和会员信息的索引文件混在一起,备份也是个问题。 如果使用了多核,那就很轻松了,产品和会员就可使用不同的URL进行提交了,业务上也很清晰,生成的索引文件也不会混在一起,也容易备份。
每个索引库通过相对独立的url访问。
多核心的配置
还记得solr home吗,既然配置多核心,那么我们可以新建一个目录作为solr home,从零开始搭建,这样理解会更深(记得在tomcat中修改solr home路径)。
我这里使用的solr home路径为:D:\Installed Applications\SolrIndex,之后将solr解压,将solr-4.9.0\example\multicore下的所有文件copy到solr home。
可以看到里面有core0和core1两个核心,和一个solr.xml。core0和core1从名字就可以看出来是两个示例核心,文件结构非常简单,就只有两个文件,schema.xml和solrconfig.xml,所以我们可以根据需要修改或新建核心,只要根据实例核心的目录结构就好。接下来是schema.xml,这个文件相当于告诉solr,有多少核心和核心的名字及核心的位置:
结构如下:
- <cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:8983}"hostContext="${hostContext:solr}">
- <core name="core0" instanceDir="core0" />
- <core name="core1" instanceDir="core1" />
- <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
- <str name="urlScheme">${urlScheme:}</str>
- </shardHandlerFactory>
- </cores>
shardHandlerFactory暂时不管,主要修改core,name是核心的名字,instanceDir是核心的路径,默认是当前目录,这个最好保持一致,即加入核心名字是core0,那么就在solr home下新建一个core0文件夹,里面放入配置文件,那么这就是一个核心。
我修改后的solr.xml配置如下:
- <cores adminPath="/admin/cores" host="${host:}" defaultCoreName="Artist" hostPort="${port:8983}"hostContext="${hostContext:solr}">
- <core name="AritstCategory" instanceDir="AritstCategory" />
- <core name="Artist" instanceDir="Artist" />
- <core name="Song" instanceDir="Song" />
- <core name="SongArtist" instanceDir="SongArtist" />
- <core name="SongCategory" instanceDir="SongCategory" />
- <core name="SongMenu" instanceDir="SongMenu" />
- <core name="SpaceAudio" instanceDir="SpaceAudio" />
- <core name="SpaceVideo" instanceDir="SpaceVideo" />
- <core name="SpaceAVNum" instanceDir="SpaceAVNum" />
- <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
- <str name="urlScheme">${urlScheme:}</str>
- </shardHandlerFactory>
- </cores>
目录结构如下:
可能大家已经注意到配置有下列内容:
- <cores adminPath="/admin/cores" host="${host:}" defaultCoreName="Artist" hostPort="${port:8983}"hostContext="${hostContext:solr}">
AdminPath是指url路径
Host是指主机名
defaultCoreName是指默认使用的核心(不配置也完全可以)
hostPort是指访问的端口(跟tomcat的端口保持一致)
hostContext是指主机的上下文,也就是webapps中solr的项目名
其实有点像tomcat项目的配置。
多核心的访问
开启tomcat服务,访问:localhost:8983/solr
如下图所示:
即可看到多个核心。当然也可以在url上访问不同核心库:
Localhost:8983/solr/admin/coreName
刚说的defaultCoreName也就是说,如果没指定访问的核心,默认访问哪个核心的作用。
分词器简介与配置
Solr默认是没有中文分词的,其中solr默认的比较常用的数据类型有下面几种:string、long、int。详细的请看我的另外一篇博客:一、Solr综述
我用的是IK分词器,是国人做的一个开源的分词器,所以主要说下IK分词器的配置。
下载
下载 "IK Analyzer 2012FF_hf1.zip"包。 详见http://zhengchao730.iteye.com/blog/1833000
解压
其中已经有比较详细的文档了,但是我发现文档中并没有对solr分词器的配置有详细的说明。所以请读者继续往下看。
配置
步骤一:将 IKAnalyzer2012FF_u1.jar拷贝到目录"$TOMCAT_HOME \webapps\solr\WEB-INF\lib"中
步骤二:将IKAnalyzer.cfg.xml、stopword.dic拷贝到目录$TOMCAT_HOME \webapps\solr\WEB-INF\classes目录下,没有则新建classes目录。
步骤三:在每个核心中的schema.xml中配置IK分词器:
- <fieldType name="text_ik" class="solr.TextField">
- <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
- <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
- </fieldType>
这样就可以使用ik分词器了。
其中isMaxWordLength是指分词的细粒度,可以分别制定index索引和query查询的分词细粒度,建议将index的isMaxWordLength设置为false,这样就采用最细分词,是索引更精确,查询时尽量能匹配,而将query的isMaxWordLength设置为true,采用最大分词,这样能够使查询出来的结果更符合用户的需求。
并且还有一点需要特别注意,我用的是solr4.9,所以需要把各核心schema.xml中的<schema name="example core zero" version="1.1">版本由1.1改为1.5
<schema name="example core zero" version="1.5">.
这样查询时分词才能成功,比如搜索中华人民共和国,如果不配置的话,默认是短语匹配,就只搜索文档中包含中华人民共和国的结果,但是如果配置了查询分词,那么中华、人民….都能被匹配。
IK分词器使用与测试
之后在schema.xml中配置一个field用于测试,如下:
- <field name="Artist_Name" type="text_ik" indexed="true" stored="true"/>
然后打开solr的admin页面:
可以看到分词之后的效果。
作者<ahref="http: www.cnblogs.com="" edwinchen="" "="" target"_blank"="">瞪着太阳的乌鸦
Solr多核心及分词器(IK)配置的更多相关文章
- 三、Solr多核心及分词器(IK)配置
多核心的概念 多核心说白了就是多索引库.也可以理解为多个"数据库表" 说一下使用multicore的真实场景,比若说,产品搜索和会员信息搜索,不使用多核也没问题,这样带来的问题是 ...
- 我与solr(六)--solr6.0配置中文分词器IK Analyzer
转自:http://blog.csdn.net/linzhiqiang0316/article/details/51554217,表示感谢. 由于前面没有设置分词器,以至于查询的结果出入比较大,并且无 ...
- 转:solr6.0配置中文分词器IK Analyzer
solr6.0中进行中文分词器IK Analyzer的配置和solr低版本中最大不同点在于IK Analyzer中jar包的引用.一般的IK分词jar包都是不能用的,因为IK分词中传统的jar不支持s ...
- ElasticSearch搜索引擎安装配置中文分词器IK插件
近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...
- 沉淀再出发:ElasticSearch的中文分词器ik
沉淀再出发:ElasticSearch的中文分词器ik 一.前言 为什么要在elasticsearch中要使用ik这样的中文分词呢,那是因为es提供的分词是英文分词,对于中文的分词就做的非常不好了 ...
- 如何在Elasticsearch中安装中文分词器(IK)和拼音分词器?
声明:我使用的Elasticsearch的版本是5.4.0,安装分词器前请先安装maven 一:安装maven https://github.com/apache/maven 说明: 安装maven需 ...
- 如何给Elasticsearch安装中文分词器IK
安装Elasticsearch安装中文分词器IK的步骤: 1. 停止elasticsearch 2.2的服务 2. 在以下地址下载对应的elasticsearch-analysis-ik插件安装包(版 ...
- Solr4.4入门,介绍Solr的安装、IK分词器的配置及高亮查询结果(转)
一.Windows下安装solr-4.4.0 1. 下载solr.4.4 2. 下载绿色版tomcat6.0.18 3. 解压下载的solr到d:\study\solr,将dist目录下的sol ...
- solr添加中文IK分词器,以及配置自定义词库
Solr是一个基于Lucene的Java搜索引擎服务器.Solr 提供了层面搜索.命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式).它易于安装和配置,而且附带了一个基于H ...
随机推荐
- C语言文件操作函数大全
http://blog.csdn.net/mu0206mu/article/details/18980913 clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include&l ...
- 谈到一些传统的企业网站SEO问题领域
在网络营销中的时间越长,有时候,企业网站还是有一些传统做法不解.也许,这是它的思想的局限.比如,我最近来到了一个新的工作环境中发现,虽然公司是专业从事传统渠道已经很不错了,但对于网络营销渠道还有改进的 ...
- 他们控制的定义(2.3):SurfaceView和SurfaceHolder
这个例子需求和流程: Activity加载它们的定义SurfaceView-> SurfaceView 构造函数:初始化刷.传感器.SurfaceHolder和注册SurfaceHolder的监 ...
- CentOS7 安装Hbase集群
继续接上一章,已安装好Hadoop集群环境 http://www.cnblogs.com/dopeter/p/4612232.html 在此基础上继续安装Hbase集群 Hbase版本为1.0.1.1 ...
- Android IPC通信和AIDL技术应用
首先我们了解一下 IPC和AIDL IPC:进程间通信 AIDL:Android Interface Definition Language,即Android接口定义语言. 为什么使用: Androi ...
- Javascript标准类型的方法集
1 array.concat(item...) concat方法会产生一个新数组,将一个或多个item附加在数组之后 var a = ['a', 'b', 'c'] var b = ['x', 'y' ...
- 仿jQuery之链式调用
链式调用的形式其实就是对象调用一连串的方法.为什么能连续调用这么多的方法?因为调用方法返回调用的对象,于是乎就可以一如既往,一往无前地调用下去.链式调用的原理就是在方法中返回执行上下文this,每次调 ...
- linux 下 apache启动、停止、重启命令
原文:linux 下 apache启动.停止.重启命令 基本的操作方法: 本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况 apahce启动命令: 推荐/u ...
- ZOJ1610_Count the Colors(段树/为段更新)
解决报告 意甲冠军: 一定长度8000段染.寻求染色完成后,.. 思路: 区间问题用线段树.成段的更新区间.最后把全部的区间下压到叶子结点,统计叶子结点的颜色. #include <iostre ...
- Xcode HeaderDoc 过程(1)
原版的: http://www.raywenderlich.com/66395/documenting-in-xcode-with-headerdoc-tutorial 了解如何从代码中生成文档! X ...