solr 4.2近义词配置,使用的是IKAnalyzer2012FF_u1版本时无法实现近义词处理
来源:互联网 发布:淘宝网儿童玩具迫击炮 编辑:程序博客网 时间:2024/06/02 13:05
最近要弄商品搜索近义词功能, 比如输入商汞 要搜到混泥土,我用的是solr4.2版本,网上转了一圈都没有我要的方案,也没有现成的类,
于是找到 lucene TokenFilterFactory类
但我用的是IKAnalyzer2012FF_u1版本 其中分词只有
IKAnalyzer.class这个类,而近义词已工厂方式去处理,故在org.wltea.analyzer.lucene 包下加了个 IKTokenizerFactory主要是已工厂方式去处理
代码如下
package org.wltea.analyzer.lucene;
import java.io.Reader;
import java.util.Map;
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.util.TokenizerFactory;
public class IKTokenizerFactory extends TokenizerFactory {
private boolean isMaxWordLength = false;
public void init(Map<String, String> args) {
String _arg = (String) args.get("isMaxWordLength");
this.isMaxWordLength = Boolean.parseBoolean(_arg);
}
public Tokenizer create(Reader reader) {
return new IKTokenizer(reader, isMaxWordLength());
}
public void setMaxWordLength(boolean isMaxWordLength) {
this.isMaxWordLength = isMaxWordLength;
}
public boolean isMaxWordLength() {
return this.isMaxWordLength;
}
}
编译后放到org.wltea.analyzer.lucene 包下
以前我只能这样定义ik分词 但是不能实现近义词功能
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
加入IKTokenizerFactory类后 改造成(可以在solr 核 下的conf 下 synonyms.txt 文件配置自己的近义词库)
<fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
- solr 4.2近义词配置,使用的是IKAnalyzer2012FF_u1版本时无法实现近义词处理
- solr-4.10.0、tomcat7、IKAnalyzer2012FF_u1中文分词器相整合以及相关配置
- IKAnalyzer2012FF_u1.jar 以及PinYin4J 使用出现的问题
- solr的配置及使用
- solr的简单配置使用
- Android针对高版本实现开机自启动时无法监听BOOT_COMPLETED的处理方法
- 一个版本Tomcat6多处使用,以及集成solr的配置
- solr分词中的近义词处理
- Solr-----8、Solr使用JNDI配置DataImportHandler的数据源
- Centos6.4 Jetty Solr4.6 IKAnalyzer2012FF_u1配置
- 【Solr】Solr配置更新索引时使用UUID
- solr-5.4.1 和 mmseg4j-2.3.0版本的配置
- 关于 solr 4.5 的配置和使用
- Solr下使用IK-Analyzer实现中文分词器的配置详情
- spring中使用solr的代码实现
- solr JBoss 使用配置
- solr配置与使用
- Solr 安装配置使用
- android shape和selector和layer-list
- android开源项目和框架
- 《Effective C++》学习笔记(五)
- 对于SSH框架进一步总结
- Oracle数据库中的查看命令
- solr 4.2近义词配置,使用的是IKAnalyzer2012FF_u1版本时无法实现近义词处理
- Itunes与iphone的通信协议usbmuxd解析
- android ant 脚本实现 apk 上传到 svn 服务器(svnkit)
- Ext.js 4 combo 在 toolbar上显示问题
- 单元测试、集成测试、系统测试的各自侧重点
- Cannot make a static reference to the non-static method的解决方法
- 改变HTML中超链接的显示样式
- java 使用zxing 生成二维码
- CocoaPods安装和使用教程