13.solr学习速成之IK分词器

摘要:
IKQueryParser IK和solr的集成,solr是针对Lucene全文检索而优化的查询分析器。1.添加jar以将ik-analyzer-solr5-5.x.jar放在apache-tomcat-8.5.15/webapps/solr/WEB-INF/lib中。在测试核心下配置schema.xml.lt。
IKAnalyzer简介
IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。
13.solr学习速成之IK分词器第1张
IKAnalyzer特性
a. 算法采用“正向迭代最细粒度切分算法”,支持细粒度和最大词长两种分词方式,速度最大支持80W字/秒(1600KB/秒)。  
b. 支持多子处理器分析模式:中文、数字、字母,并兼容日文、韩文。 
c. 较小的内存占用,优化词库占有空间,用户可自定义扩展词库。 
d. 扩展lucene的扩展实现,采用歧义分析算法优化查询关键字的搜索排列组合,提高lucene检索命中率
IK分词算法理解
      根据作者官方说法IK分词器采用“正向迭代最细粒度切分算法”,分析它的源代码,可以看到分词工具类IKQueryParser起至关重要的作用,它对搜索关键词采用从最大词到最小词层层迭代检索方式切分,比如搜索词:“中华人民共和国成立了”,首先到词库中检索该搜索词中最大分割词,即分割为:“中华人民共和国”和“成立了”,然后对“中华人民共和国”切分为“中华人民”和“人民共和国”,以此类推。最后,“中华人民共和国成立了”切分为:“中华人民 | 中华 | 华人 | 人民 | 人民共和国 | 共和国 | 共和 | 成立 | 立了”,当然,该切分方式为默认的细粒度切分,若按最大词长切分,结果为:“中华人民共和国 | 成立 | 立了”。
其它分词器
目前的分词器有:mmseg4j、paoding、ik-analyzer、imdict、Ansj;目前任在持续更新的有mmseg4j、ik-analyzer和Ansj,这三类分词器都有java的实现,ansj是一个ictclas的java实现,ictclas是中科院计算技术研究所的一个中文分词器,目前用的比较广泛的还是ik-analyzer分词器和mmseg4j 分词器,我们对比下:
mmseg4j :自带sogou词库,支持名为 wordsxxx.dic, utf8文本格式的用户自定义词库,一行一词。不支持自动检测。
ik :支持api级的用户词库加载,和配置级的词库文件指定,无 BOM 的 UTF-8 编码,rn 分割。不支持自动检测。
mmseg4j : 在complex基础上实现了最多分词(max-word),但是还不成熟,还有很多需要改进的地方。
ik :针对Lucene全文检索优化的查询分析器IKQueryParser
 IK与solr的集成

1.添加jar

将ik-analyzer-solr5-5.x.jar 放到apache-tomcat-8.5.15/webapps/solr/WEB-INF/lib
 
2.配置test核下面的schema.xml
<fieldType name="text_ik" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/>
        </analyzer>
    </fieldType>

有了这个fieldType,我们顺便改一个text_ik的field

<!--
   <field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>
   -->
   <field name="title" type="text_ik" indexed="true" stored="true" multiValued="true"/>
3.添加扩展词库
在apache-tomcat-8.5.15/webapps/solr/WEB-INF下创建classes文件夹,添加ext.dic,IKAnalyzer.cfg.xml,stopword.dic文件
也可以添加多个词库文件.IKAnalyzer.cfg.xml的内容如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
<properties>  
    <comment>IK Analyzer 扩展配置</comment>
    <!--用户可以在这里配置自己的扩展字典 -->
    <entry key="ext_dict">ext.dic;</entry> 
    
    <!--用户可以在这里配置自己的扩展停止词字典-->
    <entry key="ext_stopwords">stopword.dic;</entry> 
    
</properties>
重启tomcat

 13.solr学习速成之IK分词器第2张

 13.solr学习速成之IK分词器第3张

免责声明:文章转载自《13.solr学习速成之IK分词器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android经典游戏源码汇总/deep/ 深度作用选择器作用及使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue教程:组件Component详解(六)

一.什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能。在有些情况下,组件也可以表现为用 is 特性进行了扩展的原生 HTML 元素。 所有的 Vue 组件同时也都是 Vue 的实例,所以可接受相同的选项对象...

【Maven】CentOS7使用Nexus3搭建maven私服

一、简介   Maven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model(POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个生命周期,包括清除、编译,测试,报告、打包、部署等等。目前Apache下绝大多数项目都已经采用...

并发系列(1)之 Thread 详解

本文主要结合 java.lang.Thread 源码,梳理 Java 线程的整体脉络; 一、线程概述 对于 Java 中的线程主要是依赖于系统的 API 实现的,这一点可以从 java.lang.Thread;源码中关键的方法都是 native 方法看出,也可以直接查看 OpenJDK 源码看出来,这一点后面还会讲到;对于 JDK1.8 而言,他的 Win...

二分图的定义及判断

二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A, j in B),则称图G为一个二分图。 二分图的另一种等价的说法是,可以把每个节点着以黑色和白色之一,使得每条边的两个端点颜色不同.不难发现...

JSP介绍

1. 概况答:1) 以文本为基础能够返回动态内容到客户端;2) Http是请求和响应的默认协议;3) 一个页面可以混和html代码、Java代码以及JSP标答;4) 允许访问组件;2. JSP的好处答:1) 通过组件使用支持组件模型和软件重用;2) 源文件改变自动编译;3) 用户自定义标签简化页面开发;4) 能把Web内容, Java代码分开(针对Serv...

基于jdk自带httpserver开发的最小完整MVC框架

基于jdk自带httpserver开发的最小完整MVC框架 410kb级的完整MVC:solon(83k) + jdkhttp(27k) + enjoy(227k) + snack3(73k) DEMO启动时间:0.1s solon 是一个插件框架,提供MVC,IOC,AOP,注解,插件机制。 jdkhttp 基于jdk8自带com.sun.net.ht...