今天花了一个下午一个晚上,参考了网上许多资料,终于把paoding分词整合到solr中了,为了避免以后忘记,特此记录。
1.首先写一个类,这个类在网上都有,记录如下:
package com.test.slor.tokenizer;
import java.io.Reader;
import java.util.Map;
import net.paoding.analysis.analyzer.PaodingTokenizer;
import net.paoding.analysis.analyzer.TokenCollector;
import net.paoding.analysis.analyzer.impl.MaxWordLengthTokenCollector;
import net.paoding.analysis.analyzer.impl.MostWordsTokenCollector;
import net.paoding.analysis.knife.PaodingMaker;
import org.apache.lucene.analysis.TokenStream;
import org.apache.solr.analysis.BaseTokenizerFactory;
public class ChineseTokenizerFactory extends BaseTokenizerFactory {
/**
* 最多切分 默认模式
*/
public static final String MOST_WORDS_MODE = "most-words";
/**
* 按最大切分
*/
public static final String MAX_WORD_LENGTH_MODE = "max-word-length";
private String mode = null;
public void setMode(String mode) {
if (mode == null || MOST_WORDS_MODE.equalsIgnoreCase(mode) || "default".equalsIgnoreCase(mode)) {
this.mode = MOST_WORDS_MODE;
} else if (MAX_WORD_LENGTH_MODE.equalsIgnoreCase(mode)) {
this.mode = MAX_WORD_LENGTH_MODE;
} else {
throw new IllegalArgumentException("不合法的分析器Mode参数设置:" + mode);
}
}
@Override
public void init(Map<String,String> args) {
super.init(args);
setMode(args.get("mode").toString());
}
public TokenStream create(Reader input) {
return new PaodingTokenizer(input, PaodingMaker.make(), createTokenCollector());
}
private TokenCollector createTokenCollector() {
if (MOST_WORDS_MODE.equals(mode))
return new MostWordsTokenCollector();
if (MAX_WORD_LENGTH_MODE.equals(mode))
return new MaxWordLengthTokenCollector();
throw new Error("never happened");
}
}
然后把这个类编译成.class文件,如果想打包,也可以直接打包成.jar文件。
2.修改solr的schema.xml文件,也记录如下:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>-->
<tokenizer class="com.test.slor.tokenizer.ChineseTokenizerFactory" mode="most-words"/>
...
</analyzer>
<analyzer type="query">
<!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>-->
<tokenizer class="com.test.slor.tokenizer.ChineseTokenizerFactory" mode="most-words"/>
...
</analyzer>
</fieldType>
3.把第1步编译好的.class文件或者.jar和paoding-analysis.jar 放到容器下,比如tomcat,那即是放到tomcat\webapps\solr\WEB-INF\lib\下 ,注意,是
solr的WEB-INF\lib\,而不是你手头的某个工程的WEB-INF\lib\下,由于我粗心大意,直接在myeclipse中把两个.jar包粘贴到手头工程的WEB-INF\lib\下,结果报异常:
org.apache.solr.common.SolrException: Unknown fieldtype 'text' specified on field title......
然后一个下午过去了...
当我发现这个问题,并把两个.jar放到正确的位置(如果是.class文件,则放在solr\WEB-INF\classes,其中要自己建classes文件夹),启动tomcat,却报如下异常:
严重: org.apache.solr.common.SolrException: Error loading class 'com.test.solr.tokenizer.ChineseTokenizerFactory'...
严重: org.apache.solr.common.SolrException: analyzer without class or tokenizer & filter list...
我使用的paoding是paoding-analysis-2.0.4-beta.zip,其中lib文件夹包含的lucene是lucene-core-2.2.0.jar,而我用的solr是apache-solr-1.3.0,其中tomcat\webapps\solr\WEB-INF\lib\包含的lucene是lucene-core-2.4-dev.jar。而在第一步,import org.apache.lucene.analysis.TokenStream; 时,我用的是lucene-core-2.2.0.jar,结果编译出来的.class(或.jar)文件,运行时就报异常了。当我改用lucene-core-2.4-dev.jar时,则成功在solr中加入paoding分词了。
嗯,晚上就是这样过去的...
分享到:
相关推荐
Solr3.2 + Paoding中文分词的搜索引擎是一个针对中文文档进行高效检索的解决方案,结合了Apache Solr 3.2版本与Paoding分词器的优势。Apache Solr是基于Lucene的开源搜索服务器,提供了更高级别的API和配置选项,而...
paoding可方便地与Lucene、Solr等全文检索引擎集成,提供高性能的中文分词服务。 总结来说,paoding分词是一个强大的中文分词工具,其高效、灵活的特性使得它在众多分词库中脱颖而出。通过理解其工作原理和熟练...
NULL 博文链接:https://qiaopang.iteye.com/blog/451897
为了利用 Solr 的强大搜索功能并结合 Paoding 的中文分词能力,可以按照以下步骤操作: 1. **配置 Paoding 分词器**: - 在 Solr 的配置文件中添加 Paoding 分词器的相关设置。 - 确保 Paoding 分词库已正确加载到...
能兼容solr-4.10.2的分词器,大礼包全放送.包括IK分词器,mmseg4j分词器,庖丁分词器.都是经本人测试可用,其中mmseg4j与庖丁都是下载源码,修改重编译并测试生成的....至于与solr的整合方式,网上很多,这里就不介绍了.
solr 中文查询分词器,把一串字符分作多个词语进行查询
Solr支持多种中文分词器,如IK Analyzer、Smart Chinese Analyzer、Paoding Analyzer等,它们各自有不同的特性和适用场景。 1. IK Analyzer:是一款开源的Java语言实现的中文分词工具,支持词典动态更新,对新词...
IK分词器(Intelligent Chinese Analyzer for Solr)是为Solr设计的一款高性能的中文分词组件,尤其适用于海量数据的分词处理。在本主题中,我们将深入探讨如何在Solr中导入并使用IK分词器。 一、IK分词器介绍 IK...
**Solr与IK中文分词器** Solr是一款开源的企业级全文搜索引擎,它提供了一个高效、灵活、可扩展的搜索平台。在处理中文文本时,由于中文的特殊性(词与词之间没有明显的分隔符),需要使用专门的分词器进行预处理,...
Solr是中国最流行的全文...通过以上步骤和注意事项,你应该能够成功地在Solr 5.5和6.0中集成和使用IK分词器,从而提升中文文本的检索效果。所提供的资料将有助于这个过程,帮助你解决可能出现的问题和优化分词性能。
6. **测试验证**:创建一个索引,添加一些中文文档,然后进行查询,查看分词效果是否符合预期。 通过以上步骤,我们就能在Solr 5.4中成功配置并使用中文分词库。这个过程对于提升中文文档的检索效率和准确性至关...
标题中的"solr7.3.1中文分词器"指的就是为Solr 7.3.1版本特别优化的中文分词解决方案。 描述中提到的"solr7.3.1种需要的中文IK分词器",IK(Intelligent Chinese Analyzer)分词器是一个强大的、成熟的中文分词组件...
支持lucene4.0的paoding分词
而智能模式则会根据上下文判断,进行更复杂的分词,如识别出一些具有特定含义的短语。 在Solr中配置Ik分词器,通常需要以下几个步骤: 1. 下载ikanalyzer-solr5版本的分词器库,并将其添加到Solr的lib目录下,确保...
Solr是中国最流行的开源搜索引擎平台之一,而IK Analyzer是一款针对中文的高性能分词器,尤其在处理现代汉语的复杂情况时表现出色。本教程将详细解释如何在Solr中安装和使用IK分词器。 首先,让我们理解一下什么是...
IK分词器(Intelligent Chinese Analyzer for Solr)是针对Solr优化的中文分词工具,它支持多种分词模式,包括精确模式、全模式、关键词模式等,以满足不同场景的需求。在Solr的`schema.xml`配置文件中,你可以指定...
当我们谈论"IK分词solr5.0.0"时,我们关注的是如何在Solr 5.0.0版本中集成和使用IK分词器。 首先,IK分词器全称为“Intelligent Chinese Analyzer for Solr”,由北京大学的开源社区开发,旨在提供对中文文本更精确...
"ikanalyzer-solr5"这个文件可能是一个针对Solr 5.x版本的IK分词器的jar包,虽然标题提到的是Solr 7.2.1,但实际使用时,我们应当确保使用与Solr版本兼容的IK分词器。对于Solr 7.2.1,可能需要找到对应的ikanalyzer-...
标题中的“solr配置IK分词器Jar包和配置文件”意味着我们需要将IK分词器的相关库文件(Jar包)添加到Solr的类路径中,并且对Solr的配置文件进行适当的修改,以便Solr知道如何使用这个分词器。 首先,你需要下载IK...
Solr 6.0 中文分词是针对中文文本处理的重要功能,它是搜索引擎优化的关键环节。Solr 是一个流行的开源全文检索服务器,由 Apache 软件基金会开发,用于提供高效、可扩展的搜索和分析服务。在处理中文文档时,由于...