0 0

IK分词遇到一个问题20

最近项目用了IK分词器,版本是IKAnalyzer2012_u5

IK分词提供智能分词和非智能分词2种分词模式,new IKAnalyzer(boolean useSmart),

问题:

1.请问一下:useSmart这个值是全局的吗?

IndexWriter用的是非智能分词器new IKAnalyzer(false),在建索引的过程中,我又创建了另一个智能分词器new IKAnalyzer(true),并用它做了一次分词处理,然后上面IndexWriter的分词器也变成智能分词了?,分词的结果是智能分词的,这是不是有bug啊?

详细见代码。

 

Java代码 
  1.     public static void write() throws CorruptIndexException, LockObtainFailedException, IOException {  
  2. //创建的是非智能分词,结果是非智能分词,结果是:中国/黄海/海军/军演/,没有问题。  
  3.         IndexWriter writer = new IndexWriter(FSDirectory.open(file), new IndexWriterConfig(Version.LUCENE_36, new IKAnalyzer(false)));  
  4.         Document doc = new Document();  
  5.         Field field = new Field("title""中国黄海军演", Store.YES, Index.ANALYZED);  
  6.         doc.add(field);  
  7.         try {  
  8.             writer.addDocument(doc);  
  9.             writer.commit();  
  10.         } catch (CorruptIndexException e) {  
  11.             // TODO Auto-generated catch block  
  12.             e.printStackTrace();  
  13.         } catch (IOException e) {  
  14.             // TODO Auto-generated catch block  
  15.             e.printStackTrace();  
  16.         }  
  17. //创建了一个智能分词器,使用这个分词器做了一次分词处理  
  18.         Analyzer ik = new IKAnalyzer(true);  
  19.         TokenStream ts = ik.tokenStream("",  new StringReader("联合国儿童基金会"));  
  20.         CharTermAttribute att = (CharTermAttribute) ts.getAttribute(CharTermAttribute.class);   
  21.         while (ts.incrementToken()) {   
  22.           System.out.print(att.toString()+"/"); //打印分词结果  
  23.         }  
  24. //还是之前的indexWriter,这次建立的索引都是智能分词的结果。结果为:联合国儿童基金会,就一个词了,有问题,非智能分词结果应该是:联合国儿童基金会/联合国/联合/国/儿童/基金会/基金  
  25.         Document doc1 = new Document();  
  26.         Field field1 = new Field("title""联合国儿童基金会", Store.YES, Index.ANALYZED);  
  27.         doc1.add(field1);  
  28.         try {  
  29.             writer.addDocument(doc1);  
  30.             writer.commit();  
  31.         } catch (CorruptIndexException e) {  
  32.             // TODO Auto-generated catch block  
  33.             e.printStackTrace();  
  34.         } catch (IOException e) {  
  35.             // TODO Auto-generated catch block  
  36.             e.printStackTrace();  
  37.         }  
  38.         writer.close();  
  39.     }  

 

 按理来说这2个analyzer分词器对象应该是互不影响的,我推测里面useSmart变成共用的变量了。

2013年5月18日 22:55

2个答案 按时间排序 按投票排序

0 0

确实是设置成全局变量的问题
下载最新版本的分词器就没问题了

2013年10月11日 13:54
0 0

在第二次添加索引之前打印一下writer.getAnalyzer().useSmart(),看值为ture/false?

2013年5月29日 16:20

相关推荐

    ik分词器tar包 7.10.2

    版本7.10.2是IK分词器的一个稳定版本,为Elasticsearch 7.x系列提供了良好的支持。 **Elasticsearch简介** Elasticsearch是一款基于Lucene的开源搜索引擎,以其分布式、实时、高可扩展性以及全文检索能力而广受...

    IK分词solr5.0.0

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

    es安装ik分词器

    1. **版本不兼容**:如果遇到版本不兼容的问题,可以尝试下载其他版本的 IK 分词器,或者升级 Elasticsearch 至更高版本。 2. **构建失败**:确保环境中已经正确安装了 Maven,并且版本与项目要求一致。此外,检查...

    IK中文分词器原理

    3. **对最终的分词结果进行歧义处理**:分词过程中可能会出现一个词语被多次切割的情况,这时就需要根据特定的策略来解决这种歧义,以确保输出最合理的分词结果。 值得注意的是,IK分词器默认开启了大小写转换功能...

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

    2. **最大切分模式**:当遇到一个词时,IK会尝试尽可能多地切分,以获取更细粒度的词语。 3. **最小切分模式**:相反,它也会尝试找到最短的合法切分,以避免过度切分。 4. **自定义扩展词典**:用户可以根据需求...

    IK分词器源码

    IK分词器是Java开发的一款高效、灵活的中文分词工具,主要应用于全文检索和自然语言处理领域。它由Liu Xiao Dong和Ma Shangbo共同创建,最初是为了支持Lucene搜索引擎而设计的。源码分析有助于理解其内部工作原理,...

    Solr6.5 IK分词器

    文件`ikanalyzer-solr5`可能是一个包含IK分词器的Solr插件包,用于Solr 5版本,虽然与标题中的Solr 6.5不完全匹配,但在实际应用中,IK分词器的版本通常与Solr版本保持一致,以确保最佳兼容性和性能。如果需要在Solr...

    elasticsearch-analysis-ik-7.7.1 分词器下载

    在Elasticsearch 7.7.1环境中,安装IK分词器通常包括以下几个步骤: 1. 下载:首先从官方渠道或第三方仓库获取`elasticsearch-analysis-ik-7.7.1.zip`压缩包。 2. 解压:将下载的压缩包解压到Elasticsearch的...

    ik-analyzer-solr-master_ik分词器_pocket7ce_源码_

    对于开发者来说,拥有源码可以深入了解ik分词器的工作原理,进行定制化开发,或者排查可能遇到的问题。 **核心功能与特性** 1. **动态词典加载**:Ik Analyzer支持动态加载和更新词典,方便维护和扩展。 2. **智能...

    IK Analyzer 分词

    IK Analyzer 是一个开源的、基于Java实现的中文分词工具,主要用于对中文文本进行高效、准确的分词处理。它最初由尹春林(yincunlin)开发,后来发展成为一个社区维护的项目,得到了众多开发者和使用者的支持与贡献...

    IK分词器

    它最初由马明练发起,现在已经成为Apache Lucene和Solr项目中的一个重要组件,广泛应用于搜索引擎、信息检索、自然语言处理等领域。 **分词器的作用** 在中文文本处理中,分词是基础步骤,它将连续的汉字序列切分成...

    Elasticsearch之中文分词器插件es-ik(基于es2.4.0版本)

    如果直接使用Elasticsearch的朋友在处理中文... 这是因为使用了Elasticsearch中默认的标准分词器,这个分词器在处理中文的时候会把中文单词切分成一个一个的汉字,因此引入es之中文的分词器插件es-ik就能解决这个问题。

    solr-4.10.2部署到Tomcat所需的jar包和IK分词器资源

    Solr是Apache Lucene项目下的一个...在实际操作中,可能会遇到各种问题,如版本兼容性、网络配置、内存调优等,都需要根据具体情况进行解决。通过熟练掌握这些知识,你可以成功地构建一个高效、稳定的Solr搜索服务。

    IKAnalyzer中文分词器V3.2使用

    IKAnalyzer是一款开源的、适用于Java环境的中文分词器,主要用于解决在信息检索、文本挖掘等领域中遇到的中文处理问题。这款分词器的设计目标是提高分词的准确率,并且具有良好的可扩展性,能够方便地与其他Java应用...

    IkAnalyzer分词器

    IkAnalyzer采用的是基于词典的分词方法,它通过建立一个庞大的中文词汇库,当遇到新的文本时,会尝试将文本拆分成词典中的词汇。同时,IkAnalyzer还支持用户自定义扩展词典,以便添加特定领域的词汇或专有名词。此外...

    elasticsearch-analysis-ik-7.7.0分词器及安装步骤.rar

    `elasticsearch-analysis-ik` 是一个专门为 Elasticsearch 设计的高性能、高度可定制的中文分词插件。本文将详细介绍 `elasticsearch-analysis-ik-7.7.0` 分词器及其安装步骤,以及可能遇到的问题和解决方案。 首先...

    solr6.x的IKAnalyzer配置智能分词

    压缩包中的`readme.txt`文件应该包含了详细的步骤和可能遇到的问题解决方案。 6. **优化与维护**:为了保持搜索性能,需要定期更新词典,特别是对于行业新词或热门词汇。此外,监控Solr的日志,检查可能出现的错误...

    elasticsearch-analysis-ik-7.2.0.rar

    然而,根据描述,这个7.2.0版本的IK分词器存在一个问题:尽管其名称显示为7.2.0,但实际上解压后的内容仍然是7.0.0版本。这意味着用户在使用时可能会遇到兼容性问题,因为分词器版本与Elasticsearch的实际版本不匹配...

    Lucene4.7+IK Analyzer中文分词入门教程

    在这个入门教程中,我们将使用Lucene 4.7版本,结合IK Analyzer,一个专门针对中文分词的开源分析器,来学习如何构建一个简单的搜索引擎。 首先,你需要下载Lucene 4.7和IK Analyzer 2012-FF Hotfix 1。Lucene的...

    ikanalyzer中文分词支持lucene7.1.0

    ikanalyzer中文分词支持lucene7.1.0是一个针对Lucene搜索引擎的中文分词扩展,由林良益先生开发,旨在提供高效、精准的中文词汇拆解功能。Lucene是一个开源全文检索库,它提供了索引和搜索文本的强大工具。然而,...

Global site tag (gtag.js) - Google Analytics