Code Monkey home page Code Monkey logo

ik-analyzer-solr's Introduction

ik-analyzer-solr

ik-analyzer for solr 7.x-8.x

GitHub version Open Source Love Crates.io Build Status

GitHub forks GitHub stars

简介

适配最新版本solr 7&8;

扩展IK原有词库:

分词工具 词库中词的数量 最后更新时间
ik 27.5万 2012年
mmseg 15.7万 2017年
word 64.2万 2014年
jieba 58.4万 2012年
jcesg 16.6万 2018年
sougou词库 115.2万 2020年

将以上词库进行整理后约187.1万条词汇;

添加动态加载词典表功能,在不需要重启solr服务的情况下加载新增的词典。

关闭默认主词典请在IKAnalyzer.cfg.xml配置文件中设置use_main_dictfalse

使用说明

  • jar包下载地址:GitHub version

  • 历史版本:GitHub version

    <!-- Maven仓库地址 -->
    <dependency>
        <groupId>com.github.magese</groupId>
        <artifactId>ik-analyzer</artifactId>
        <version>8.5.0</version>
    </dependency>

Solr-Cloud

单机版Solr

  1. 将jar包放入Solr服务的JettyTomcatwebapp/WEB-INF/lib/目录下;

  2. resources目录下的5个配置文件放入solr服务的JettyTomcatwebapp/WEB-INF/classes/目录下;

    ① IKAnalyzer.cfg.xml
    ② ext.dic
    ③ stopword.dic
    ④ ik.conf
    ⑤ dynamicdic.txt
  3. 配置Solr的managed-schema,添加ik分词器,示例如下;

    <!-- ik分词器 -->
    <fieldType name="text_ik" class="solr.TextField">
      <analyzer type="index">
          <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
          <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
          <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
          <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
  4. 启动Solr服务测试分词;

    analyzer

  5. IKAnalyzer.cfg.xml配置文件说明:

    名称 类型 描述 默认
    use_main_dict boolean 是否使用默认主词典 true
    ext_dict String 扩展词典文件名称,多个用分号隔开 ext.dic;
    ext_stopwords String 停用词典文件名称,多个用分号隔开 stopword.dic;
  6. ik.conf文件说明:

    files=dynamicdic.txt
    lastupdate=0
    1. files为动态词典列表,可以设置多个词典表,用逗号进行分隔,默认动态词典表为dynamicdic.txt
    2. lastupdate默认值为0,每次对动态词典表修改后请+1,不然不会将词典表中新的词语添加到内存中。lastupdate采用的是int类型,不支持时间戳,如果使用时间戳的朋友可以把源码中的int改成long即可; 2018-08-23 已将源码中lastUpdate改为long类型,现可以用时间戳了。
  7. dynamicdic.txt 为动态词典

    在此文件配置的词语不需重启服务即可加载进内存中。 以#开头的词语视为注释,将不会加载到内存中。

更新说明

  • 2021-12-23: 升级lucene版本为8.5.0
  • 2021-03-22: 升级lucene版本为8.4.0
  • 2020-12-30:
    • 升级lucene版本为8.3.1
    • 更新词库
  • 2019-11-12:
    • 升级lucene版本为8.3.0
    • IKAnalyzer.cfg.xml增加配置项use_main_dict,用于配置是否启用默认主词典
  • 2019-09-27: 升级lucene版本为8.2.0
  • 2019-07-11: 升级lucene版本为8.1.1
  • 2019-05-27:
    • 升级lucene版本为8.1.0
    • 优化原词典部分重复词语
    • 更新搜狗2019最新流行词汇词典,约20k词汇量
  • 2019-05-15: 升级lucene版本为8.0.0,并支持Solr8使用
  • 2019-03-01: 升级lucene版本为7.7.1
  • 2019-02-15: 升级lucene版本为7.7.0
  • 2018-12-26:
    • 升级lucene版本为7.6.0
    • 兼容solr-cloud,动态词典配置文件及动态词典可交由zookeeper进行管理
    • 动态词典增加注释功能,以#开头的行将视为注释
  • 2018-12-04: 整理更新词库列表magese.dic
  • 2018-10-10: 升级lucene版本为7.5.0
  • 2018-09-03: 优化注释与输出信息,取消部分中文输出避免不同字符集乱码,现会打印被调用inform方法的hashcode
  • 2018-08-23:
    • 完善了动态更新词库代码注释;
    • 将ik.conf配置文件中的lastUpdate属性改为long类型,现已支持时间戳形式
  • 2018-08-13: 更新maven仓库地址
  • 2018-08-01: 移除默认的扩展词与停用词
  • 2018-07-23: 升级lucene版本为7.4.0

感谢 Thanks

IDEA

forthebadge

BUG & 疑问 & 其它

如果您在使用过程中遇到了BUG,或者有不清楚的地方,请挂ISSUE或者联系作者:[email protected]

如果您觉得该项目对您有帮助,请别忘记给这个项目一个star

ik-analyzer-solr's People

Contributors

dependabot[bot] avatar itlaowang avatar magese avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ik-analyzer-solr's Issues

分词结果过滤单个字符

请问分词结果怎么过滤单个字符呢?如果源词就只有一个字符那么就直接返回源词,如果原来的词是多个字符例如 “我是**人”, 那么分词结果只保留 “我是**人”, “我是”,“**人”, “**”,不再要“人”

空指针异常

最开始我看的博客也是星火燎原,https://www.cnblogs.com/liang1101/articles/6395016.html,
一直报空指针异常,换了大佬这个包之后还是在这一句代码处报异常,dynamicdic文件是不能为空么,ik我也放在class文件下了,但是仍然解析不了这个文件,异常报错如下,请大佬指教。

IKTokenizerFactory 1081633527 inform conf: ik.conf
parsing ik.conf NullPointerException!!![org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:407), org.wltea.analyzer.lucene.IKTokenizerFactory.canUpdate(IKTokenizerFactory.java:124), org.wltea.analyzer.lucene.IKTokenizerFactory.update(IKTokenizerFactory.java:98), org.wltea.analyzer.lucene.IKTokenizerFactory.inform(IKTokenizerFactory.java:79), org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:720), org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:176), org.apache.solr.schema.ManagedIndexSchema.<init>(ManagedIndexSchema.java:105), org.apache.solr.schema.ManagedIndexSchemaFactory.create(ManagedIndexSchemaFactory.java:173), org.apache.solr.schema.ManagedIndexSchemaFactory.create(ManagedIndexSchemaFactory.java:45), org.apache.solr.schema.IndexSchemaFactory.buildIndexSchema(IndexSchemaFactory.java:75), org.apache.solr.core.ConfigSetService.createIndexSchema(ConfigSetService.java:119), org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:92), org.apache.solr.core.CoreContainer.getConfigSet(CoreContainer.java:1073), org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1025), org.apache.solr.core.CoreContainer.lambda$load$13(CoreContainer.java:642), com.codahale.metrics.InstrumentedExecutorService$InstrumentedCallable.call(InstrumentedExecutorService.java:197), java.util.concurrent.FutureTask.run(FutureTask.java:266), org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.lambda$execute$0(ExecutorUtil.java:188), java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142), java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617), java.lang.Thread.run(Thread.java:748)]

扩展词典优先级问题

Solr 8.5.2 单机环境,
不启用用户主词典的情况下。 扩展词典有效果。
启用用户主词典的情况下。 扩展词典好像没有效果, 是不是优先级没有主词典高。 别忽略了。
用户扩展词典是不是第一优先的呢?
好像停用词也不起作用。

dynamicdic.txt是否支持删除词语

作者大大您好:
我使用ik-analyzer-solr添加词语分词正常,但是有些业务是需要把这些词删除的.
我发现删除dynamicdic.txt中的一些词语之后,分词还是会有.重启solr之后才会有效.
请问一下作者 有么什么好的办法 不重启自动加载的 谢谢

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.