1、分析器改造 net.paoding.analysis.analyzer.PaodingTokenizer.java
extends Tokenizer 原来是 extends TokenStream
2、net.paoding.analysis.analyzer.solr.ChineseTokenizerFactory.java
package net.paoding.analysis.analyzer.solr;
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.lucene.analysis.Tokenizer;
import org.apache.solr.analysis.BaseTokenizerFactory;
/**
* Created by IntelliJ IDEA. User: ronghao Date: 2007-11-3 Time: 14:40:59 中文切词
* 对庖丁切词的封装
*/
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"));
}
public Tokenizer 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");
}
}
3、下载庖丁 将paoding-analysis.jar改造成paoding-analysis-solr.jar(将1,2覆盖进去这个包)
4、定义庖丁词典 paoding-dic-home.properties
paoding.dic.home=D:/WORK/DOCSET/solr/paoding-analysis-2.0.4-beta/dic/
5、替换原有的分词类 D:\WORK\DOCSET\solr\j-solr1\solr\conf\schema.xml
<fieldtype name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="net.paoding.analysis.analyzer.solr.ChineseTokenizerFactory" mode="most-words"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="net.paoding.analysis.analyzer.solr.ChineseTokenizerFactory" mode="most-words"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldtype>
分享到:
相关推荐
支持solr5.5 solr6.0中IK分词需要的资料
solr6的中文分词器ik-analyzer-solr-6.0.jar,在solr上亲测可用
solr5 中文分词
solr cloud6.x.x 都可以用,solr的拼音分词
最新版solr4.3的IK分词器,中文分词效果良好!对付一般的大众分词没有问题
介绍了Solr5.5内部使用的分词原理,有助于开发者自定义自己的分词器时掌握分词的基础知识。
Solr5.4的中文分词库,解压拷贝到Solr5.4.0的WEB-INF目录下即可,如非默认数据保存路径,要修改web.xml文件
solr7 的 ik分词器 ik-analyzer-solr7.x ,全文检索体验升级,更精确
IK分词solr5.0.0
solr5.5使用的IK分词IKAnalyzer2012FF_u2.jar包,亲测可用。以及solr5.5同mysql数据同步用到的solr-dataimportscheduler-1.1.1.jar包,亲测可用。
搜索引擎solr环境配置、分词及索引操作
ik-analyzer-solr7,支持 solr7,内含 jar 包和详细使用文档
solr6.0需要的IK分词资料,其中包括IK分词的jar和配置文件还有搜狗词库
solr 源码 + IK 分词器 + zookeeper。
solr6.0的中文分词也支持solr5.x,IKAnalyzer.jar和配置文件
用于solr6.5的IK分词包,内含使用说明及配置文件
最高版本的 solr 中文分词配置 , 小弟已经测试过了 里面的 jar 要到各官网上下载
solr配置ikanalyzer分词文件以使用说明
solr 6.4.1配置中文分词IK所需资源,配置见博客:https://my.oschina.net/u/126875/blog/836858