public class SynonymAnalyzer extends Analyzer{ @Override protected TokenStreamComponents createComponents(String fieldname, Reader reader) { SynonymMap.Builder builder = new SynonymMap.Builder(true); //Be sure the boolean last arg you pass there is the one you want. There are significant tradeoffs here. //Add as many terms as you like here... builder.add(new CharsRef("中华"), new CharsRef("华夏"), true); // builder.add(new CharsRef("中国"), new CharsRef("华夏"), true); // builder.add(new CharsRef("喀什米尔"), new CharsRef("克什米尔"), true); Set<String> keys = DataCache.SYNONYMS.keySet(); for (String key : keys) { String[] samewords = DataCache.SYNONYMS.get(key); for (String word : samewords) { builder.add(new CharsRef(key), new CharsRef(word), true); // System.out.println(key+"--"+word); } } // CharsRef multiWordCharsRef = new CharsRef(); // SynonymMap.Builder.join(new String[]{"中华", "华夏"}, multiWordCharsRef); // builder.add(new CharsRef("中国"), multiWordCharsRef, true); SynonymMap mySynonymMap = null; try { mySynonymMap = builder.build(); // mySynonymMap = null; } catch (IOException e) { e.printStackTrace(); } Tokenizer source = new AnsjTokenizer(new ToAnalysis(reader), reader,null,true); //Tokenizer source = new AnsjTokenizer(new IndexAnalysis(reader), reader,null,true); // Tokenizer source = new ClassicTokenizer(Version.LUCENE_46, reader); TokenStream filter = new StandardFilter(Version.LUCENE_40, source); filter = new LowerCaseFilter(Version.LUCENE_40,filter); filter = new SynonymFilter(filter, mySynonymMap, false); //Whatever other filter you want to add to the chain, being mindful of order. return new TokenStreamComponents(source, filter); } }
相关推荐
本篇将聚焦于"Lucene5学习之自定义同义词分词器简单示例",通过这个主题,我们将深入探讨如何在Lucene5中自定义分词器,特别是实现同义词扩展,以提升搜索质量和用户体验。 首先,理解分词器(Analyzer)在Lucene中...
本篇文章将深入探讨如何基于Lucene 5.5版本构建一个同义词分析器,以及它对理解Lucene内部分析构造的重要性。 首先,我们要明白同义词分析器在文本处理中的作用。在信息检索系统中,同义词分析器能够识别并处理具有...
【描述】: 本文探讨了如何在Lucene搜索引擎中实现中文同义词查询,适合那些希望了解和使用Lucene同义词功能的读者。 【标签】: lucene同义词 【正文】: 随着互联网的快速发展,中文信息量剧增,搜索引擎需要处理...
本文将深入探讨一个以"lucene的分词的测试工程"为主题的项目,涵盖分词器的比较、扩展停用词以及同义词分词等多个关键知识点。 一、Lucene简介 Lucene是一款高性能、全文检索的开源库,它提供了索引和搜索功能,...
### Elasticsearch 安装 IK 分词器详解 #### 一、背景及需求分析 Elasticsearch 是一款基于 Lucene 的搜索引擎,广泛应用于日志处理、全文检索等场景。它提供了多种内置分词器来处理文本数据,但在实际应用过程中...
利用 `Lucene.Net` 和盘古分词,我们可以构建一个强大的站内搜索系统,提供精准的关键词匹配、拼音模糊搜索、同义词搜索等功能。通过定制化的索引策略和搜索算法,可以提升用户的搜索体验,提高用户在网站的停留时间...
在实际应用中,可能还需要考虑如何处理停用词、同义词、词形还原等问题,以提升搜索质量。此外,定期重建索引和优化索引结构也是保持搜索引擎高效运行的重要任务。 总的来说,结合Lucene.Net和盘古分词,开发者可以...
在这个过程中,Analyzer是连接分词器和索引构建的关键,它负责接收输入文本,进行分词,然后将结果转化为Lucene.NET可以理解的Token流。 在搜索阶段,用户输入的查询字符串同样会经过盘古分词的处理,生成查询...
- 实现模糊搜索:分词器可以帮助实现同义词搜索、近义词搜索等功能,提高用户体验。 3. **安装和使用 IK 分词器的步骤:** - 下载已构建好的 IK 分词器包。 - 将分词器解压后的文件复制到 Elasticsearch 安装...
5. **配置灵活性**:用户可以通过修改配置文件调整分词策略,如设置最大深度、是否开启同义词扩展等。 6. **与Elasticsearch集成**:IK分词器与Elasticsearch有良好的集成,安装简单,只需将解压后的`elasticsearch...
支持Spring-data-solr1.5的ik分词器,并且修改了代码,添加一个新的类,用于支持同义词,目前可以同时支持分词和同义词的功能。 修改 managed-schema,添加 <analyzer type="index"> ...
5. **插件化设计**:方便与其他 Elasticsearch 插件配合使用,如拼音插件、同义词插件等。 **安装与使用** 安装 Elasticsearch-analysis-ik 插件非常简单,只需在 Elasticsearch 根目录下执行命令 `bin/elastic...
通过对基于最大匹配算法的中文分词器的设计与改进,并引入文本解析器与构建同义词词库引擎,使得Lucene对中文的检索更加个性化。通过检索结果的对比表明,改进后的中文分词器对检索功能的扩展有了极大的提高。并最终...
这仅仅是Lucene分词器功能的一部分,实际应用中,还需要考虑如词性标注、自定义词典、模糊搜索、同义词处理等多种复杂情况,以满足不同场景的需求。对于大型文档海量搜索系统来说,优化分词策略和提高搜索效率至关...
过滤器可以进一步修改分词器产生的结果,比如去除数字、标点符号,或者执行同义词替换。查询分析器则负责处理用户的查询字符串,确保它们与索引中的分词保持一致。 总结来说,"分词器6659282.zip"是一个与Solr搜索...
它支持自定义扩展词典、同义词扩展、动态词典加载等功能,能更好地适应中文的复杂语境。 在安装IK分词器之前,确保你的Elasticsearch服务已经正确安装并运行在7.17.11版本。安装步骤如下: 1. **下载插件**: 将...
3. SmartChinese Analyzer:专为Solr和Lucene设计的中文分词器,支持停用词、自定义词典等功能,性能稳定。 4. LTP(LanTu NLP Platform):哈工大推出的一套完整的自然语言处理工具包,其分词效果在学术界受到认可...
4. **用户自定义规则**:用户可以通过配置文件设定自己的分词规则,例如停用词、同义词等,以满足特定应用场景的需求。 5. **插件扩展**:IK Analyzer支持插件化开发,可以方便地增加新的分词策略或功能。 在实际...
使用中文分词器后,Elasticsearch可以更好地处理和索引中文文本,支持复杂的搜索查询,如模糊匹配、同义词搜索、短语匹配等。这对于中文网站、社交媒体分析、新闻聚合等应用场景至关重要。 总的来说,"es6.4.0+中文...
jcseg是使用Java开发的一个开源中文分词器,使用流行的mmseg算法实现,并且提供了最高版本的lucene-4.x和最高版本solr-4.x的分词接口. 1。目前最高版本:jcseg-1.9.2。兼容最高版本lucene-4.x和最高版本solr-4.x 2...