`
itace
  • 浏览: 175834 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

lucene同义词分词器

阅读更多
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学习之自定义同义词分词器简单示例",通过这个主题,我们将深入探讨如何在Lucene5中自定义分词器,特别是实现同义词扩展,以提升搜索质量和用户体验。 首先,理解分词器(Analyzer)在Lucene中...

    lucene5.5做同义词分析器

    本篇文章将深入探讨如何基于Lucene 5.5版本构建一个同义词分析器,以及它对理解Lucene内部分析构造的重要性。 首先,我们要明白同义词分析器在文本处理中的作用。在信息检索系统中,同义词分析器能够识别并处理具有...

    向LUCENE搜索引擎中加人中文同义词查询

    【描述】: 本文探讨了如何在Lucene搜索引擎中实现中文同义词查询,适合那些希望了解和使用Lucene同义词功能的读者。 【标签】: lucene同义词 【正文】: 随着互联网的快速发展,中文信息量剧增,搜索引擎需要处理...

    lucene的分词的测试工程

    本文将深入探讨一个以"lucene的分词的测试工程"为主题的项目,涵盖分词器的比较、扩展停用词以及同义词分词等多个关键知识点。 一、Lucene简介 Lucene是一款高性能、全文检索的开源库,它提供了索引和搜索功能,...

    盘古分词、lucene3.0.3搜索的使用示例v1.3.zip

    在实际项目中,开发者可以根据业务需求进一步优化搜索算法,提升用户体验,比如添加同义词处理、模糊匹配、拼音搜索等功能。总的来说,盘古分词与Lucene的结合使用,为.NET开发者提供了一套强大的文本处理和搜索工具...

    lucene.net和盘古分词做站内搜索,热词搜索

    利用 `Lucene.Net` 和盘古分词,我们可以构建一个强大的站内搜索系统,提供精准的关键词匹配、拼音模糊搜索、同义词搜索等功能。通过定制化的索引策略和搜索算法,可以提升用户的搜索体验,提高用户在网站的停留时间...

    ik分词器tar包 7.10.2

    5. **配置灵活性**:用户可以通过修改配置文件调整分词策略,如设置最大深度、是否开启同义词扩展等。 6. **与Elasticsearch集成**:IK分词器与Elasticsearch有良好的集成,安装简单,只需将解压后的`elasticsearch...

    Lucene.Net +盘古分词 搜索引擎

    在实际应用中,可能还需要考虑如何处理停用词、同义词、词形还原等问题,以提升搜索质量。此外,定期重建索引和优化索引结构也是保持搜索引擎高效运行的重要任务。 总的来说,结合Lucene.Net和盘古分词,开发者可以...

    lucene.net+盘古分词

    在这个过程中,Analyzer是连接分词器和索引构建的关键,它负责接收输入文本,进行分词,然后将结果转化为Lucene.NET可以理解的Token流。 在搜索阶段,用户输入的查询字符串同样会经过盘古分词的处理,生成查询...

    支持Spring-data-solr1.5的ik分词器,同义词

    支持Spring-data-solr1.5的ik分词器,并且修改了代码,添加一个新的类,用于支持同义词,目前可以同时支持分词和同义词的功能。 修改 managed-schema,添加 &lt;analyzer type="index"&gt; ...

    maven 构建好的 IK 分词器,可直接使用

    - 实现模糊搜索:分词器可以帮助实现同义词搜索、近义词搜索等功能,提高用户体验。 3. **安装和使用 IK 分词器的步骤:** - 下载已构建好的 IK 分词器包。 - 将分词器解压后的文件复制到 Elasticsearch 安装...

    基于Lucene的中文分词器的改进与实现

    通过对基于最大匹配算法的中文分词器的设计与改进,并引入文本解析器与构建同义词词库引擎,使得Lucene对中文的检索更加个性化。通过检索结果的对比表明,改进后的中文分词器对检索功能的扩展有了极大的提高。并最终...

    elasticsearch-analysis-ik 7.10.0 分词器

    5. **插件化设计**:方便与其他 Elasticsearch 插件配合使用,如拼音插件、同义词插件等。 **安装与使用** 安装 Elasticsearch-analysis-ik 插件非常简单,只需在 Elasticsearch 根目录下执行命令 `bin/elastic...

    分词器6659282.zip

    过滤器可以进一步修改分词器产生的结果,比如去除数字、标点符号,或者执行同义词替换。查询分析器则负责处理用户的查询字符串,确保它们与索引中的分词保持一致。 总结来说,"分词器6659282.zip"是一个与Solr搜索...

    solr中文分词器

    3. SmartChinese Analyzer:专为Solr和Lucene设计的中文分词器,支持停用词、自定义词典等功能,性能稳定。 4. LTP(LanTu NLP Platform):哈工大推出的一套完整的自然语言处理工具包,其分词效果在学术界受到认可...

    elasticsearch7.17.11版本分词器插件安装包

    它支持自定义扩展词典、同义词扩展、动态词典加载等功能,能更好地适应中文的复杂语境。 在安装IK分词器之前,确保你的Elasticsearch服务已经正确安装并运行在7.17.11版本。安装步骤如下: 1. **下载插件**: 将...

    魂动罗java源码-jcseg:一个开源的分词器,增加同义词优化

    jcseg是使用Java开发的一个开源中文分词器,使用流行的mmseg算法实现,并且提供了最高版本的lucene-4.x和最高版本solr-4.x的分词接口. 1。目前最高版本:jcseg-1.9.2。兼容最高版本lucene-4.x和最高版本solr-4.x 2...

    es6.4.0+中文分词器6.4.0.rar

    使用中文分词器后,Elasticsearch可以更好地处理和索引中文文本,支持复杂的搜索查询,如模糊匹配、同义词搜索、短语匹配等。这对于中文网站、社交媒体分析、新闻聚合等应用场景至关重要。 总的来说,"es6.4.0+中文...

    IK中文分词器

    **IK中文分词器**是针对中文文档处理的重要工具,主要应用于搜索引擎和自然语言处理领域。在信息检索、文本分析和大数据分析等场景下,准确的分词是基础且关键的一步。IKAnalyzer,作为一款高效、易用的中文分词组件...

    Lucene如何使用TokenFilter进行再分词

    这只是一个简单的例子,实际上`TokenFilter`可以实现更复杂的功能,如词形还原、同义词替换等。 在提供的源代码中,你可能看到了更多关于如何实际应用`TokenFilter`的例子,包括如何组合多个`TokenFilter`以及如何...

Global site tag (gtag.js) - Google Analytics