zoukankan      html  css  js  c++  java
  • Lucene全文搜索之分词器:使用IK Analyzer中文分词器(修改IK Analyzer源码使其支持lucene5.5.x)

    注意:基于lucene5.5.x版本

    一、简单介绍下IK Analyzer

    IK Analyzer是linliangyi2007的作品,再此表示感谢,他的博客地址:http://linliangyi2007.iteye.com/

    IK Analyzer支持两种分词,一种是最细粒度分词(推荐使用,Ik默认采用最细粒度),还有一种的智能分词(测试了一下智能分词还没有lucene自带的分词准确,呵呵了)。

    二、IK Analyzer兼容性问题解决办法

    IKanalyzer目前最新版本只支持到lucene4.x、solr4.x,所以我们需要修改一下IKanalyzer的源码,让它支持lucene5.5版本。

    这里提供由本人修改的兼容lucene5.x的IK Analyzer版本,下载地址:http://download.csdn.net/detail/eguid_1/9576005

    注意:基于lucene5.5.2版本,采用jdk1.7环境,lucene6.x请使用jdk1.8,lucene5.5.x的API与之前的版本有些微的改变。


    三、为什么要使用中文分析器

    那么回归标题,为什么要使用中文分词器,原因就是lucene自带的分析器StandardAnalyzer虽然支持中文,但是分词分的不够细,对于某些明显的中文词语没有进行分词。


    四、如何使用中文分析器

    我将Analyzer分析器单独拿了出来进行独立处理(这么做有很多好处,就是我可以很轻松的扩展使用新的分词器

    其他源码完全不变,只需要改变AnalyzerServ的代码即可。

    IK分词器默认有三个相关配置文件:

    ext.dic(扩展词库);

    IKAnalyzer.cfg.xml(扩展词库及停词库配置);

    stopword.dic(停词)


    (1)建立索引时使用:

     //false-最细粒度分词;true - 智能分词


    Analyzer analyzer=new IKAnalyzer(false);

    indexWriterConfig = new IndexWriterConfig(analyzer);


    (2)搜索时使用:

     //false-最细粒度分词;true - 智能分词


    Analyzer analyzer=new IKAnalyzer(false);

    QueryBuilder parser = new QueryBuilder(analyzer);


  • 相关阅读:
    PHP版本VC6与VC9/VC11/VC14、Thread Safe与None-Thread Safe等的区别
    Django 开发------django-crontab实现服务端的定时任务
    django HTML 数据处理
    HTML 罗盘式时钟
    Tcpdump 常用命令、参数记录
    jquery 实现 <imput>标签 密码框显示/隐藏密码功能
    Django 实现分页功能(django 2.2.7 python 3.7.5 )
    bootstrap 4 学习笔记
    IIS属性解析
    IIS站点权限设置
  • 原文地址:https://www.cnblogs.com/eguid/p/6821606.html
Copyright © 2011-2022 走看看