`

Solr多核心及分词器(IK)配置

    博客分类:
  • Solr
阅读更多

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页面:



 
可以看到分词之后的效果。

  • 大小: 83.6 KB
  • 大小: 60.3 KB
  • 大小: 58.7 KB
  • 大小: 28.1 KB
分享到:
评论

相关推荐

    支持solr5.5 solr6.0中IK分词需要的资料

    标题和描述提到的是针对Solr 5.5和Solr 6.0版本的IK分词器支持的相关资料,这意味着这些资源可能包括配置文件、文档、示例代码或者更新日志,帮助用户在这些特定版本的Solr中集成和优化IK分词器。 首先,让我们来看...

    支持 Solr7 的 ik 分词器

    3. **ik-analyzer-solr7x.jar**:这是核心的分词器实现,包含了 ik 分词器的 Solr 7 版本所需的所有类和库。这个 JAR 文件需要被添加到 Solr 的 classpath 中,以便在 Solr 中使用 ik 分词器进行索引和查询。 4. **...

    solr6的中文分词器ik-analyzer-solr-6.0.jar

    solr6的中文分词器ik-analyzer-solr-6.0.jar,在solr上亲测可用

    IK分词solr5.0.0

    2. **修改schema.xml**:在Solr的配置文件schema.xml中,我们需要定义一个或多个字段类型(fieldType),并指定使用IK分词器。例如,可以创建一个名为`text_ik`的字段类型,配置如下: ```xml ...

    solr ik分词器

    3. **配置Solr核心**:接下来,你需要在你的Solr核心(collection)配置文件`solrconfig.xml`中添加IK分词器的相关配置。在`&lt;requestHandler&gt;`或者`&lt;searchComponent&gt;`部分添加以下代码: ```xml &lt;filter class="...

    solr环境搭建和中文分词器IK配置

    在本教程中,我们将深入探讨如何搭建Solr 7.2.1环境,并配置中文分词器IKAnalyzer以支持中文搜索。 首先,我们来了解Solr 7.2.1的安装步骤: 1. **下载Solr**:访问Apache Solr官方网站,下载最新稳定版的Solr,...

    solr4.3的IK分词器

    最新版solr4.3的IK分词器,中文分词效果良好!对付一般的大众分词没有问题

    针对Solr6.6.0的IK分词器

    "ik-analyzer-solr5-5.x.jar"和"solr-analyzer-ik-5.1.0.jar"这两个文件是IK分词器的实现库,它们包含了IK分词器的核心代码和相关依赖。其中,"ik-analyzer-solr5-5.x.jar"可能是一个较旧的版本,适用于Solr 5.x系列...

    solr7 的 ik分词器

    Solr7的IK分词器是针对中文文本检索的一个重要工具,它在全文检索领域扮演着关键角色。IK Analyzer是一款开源的、适用于Java环境的中文分词组件,专为提高中文信息处理的效率和准确性而设计。在Solr7版本中,IK分词...

    solr-4.10.3+ik分词器

    在Solr的配置文件中,如“solr/conf/solrconfig.xml”和“solr/conf/managed-schema”中,我们需要指定使用IK分词器。添加或修改相应的分析器设置,比如设置默认的查询分析器和索引分析器为IKAnalyzer。重启Solr服务...

    solr中文分词jar包ik-analyzer 含class配置 ik-analyzer-7.5.0

    标签中的"ik-ana"是Ik Analyzer的简称,"solr 中文分词"强调了这个分词器在Solr中的应用场景。文件列表中的"ik-analyzer-7.5.0.jar"即是我们需要集成到Solr中的核心组件。 总之,Ik Analyzer 7.5.0是Solr处理中文...

    solr与IK中文分词器的安装包及配置

    在`server/solr`目录下,使用`bin/solr create -c my_core`创建新核心,然后编辑`my_core/conf/solrconfig.xml`和`my_core/conf/schema.xml`,配置字段类型(`fieldType`)为使用IK分词器的文本字段,例如: ...

    ikanalyzer-solr8.4.0_solr8_solr_ikanalyzer_中文分词_

    ikanalyzer 是一个专门为Java开发的中文分词器,它基于 Lucene 库,适用于各种文本处理和搜索引擎场景。在 Solr 环境中,ikanalyzer 的作用是为中文文档提供精确的分词服务,从而提升搜索质量和效率。Solr8.4.0 是 ...

    ubuntu下solr7的ik分词及配置使用

    使用Solr管理界面或通过API创建一个新的核心,确保在schema配置中指定`text`字段类型使用IK分词器。 至此,你已经在Ubuntu上成功配置并启用了Solr 7以及IK分词器。现在,你可以导入数据并进行中文文本的搜索测试,...

    solr配置IK分词器Jar包和配置文件

    Schema.xml是Solr的核心配置文件,它定义了字段类型(Field Types)和字段(Fields)。为了使用IK分词器,你需要创建一个新的字段类型,指定使用IK分词器。以下是一个示例配置: ```xml &lt;fieldType name="text_ik" ...

    solr7.5_ik分词器,suggest配置源文件文件

    标题中的“solr7.5_ik分词器,suggest配置源文件”指的是在Solr 7.5版本中使用Ik分词器和Suggest组件进行配置和使用的源文件。Ik分词器是针对中文环境优化的,它包括了多种分词策略,如全模式、最细粒度模式等,可以...

    solr5的中文分词器ik-analyzer-solr5-master.zip

    **Solr5中文分词器IK Analyzer详解** IK Analyzer是一个广泛使用的开源中文分词器,尤其在搜索引擎领域,如Apache Solr和Elasticsearch中,它扮演着关键的角色。本项目"ik-analyzer-solr5-master.zip"是IK Analyzer...

    IK分词器_ikanalyzer-solr5

    在配置Solr时,我们需要在Solr的schema.xml文件中指定使用IK分词器,并配置相应的分词参数,例如自定义词典路径。同时,还需要将ikanalyzer-solr5的jar包添加到Solr的lib目录下,确保在启动Solr时能够正确加载分词器...

    跟益达学Solr5之使用IK分词器

    1. **下载与配置**:首先,从官方网站或者GitHub仓库获取最新的IK分词器版本,解压后将`ik-analyzer-solr5.x.jar`添加到Solr的`lib`目录下,确保Solr启动时能加载到该分词器。 2. **配置Schema.xml**:然后,我们...

Global site tag (gtag.js) - Google Analytics