近日公司开始改造旧有的搜索系统,用到solr4,而且本人关注IK分词器比较多。发现IK 2012对TokenizerFactory不支持,缺乏这个支持的话,有很多自定义配置功能用不上。
故开发此代码,兼容Solr4分词功能
代码测试可用
附件附上对IK2012代码的二次编译jar包
IKTokenizerFactory
package org.wltea.analyzer.henry;
import java.io.IOException;
import java.io.Reader;
import java.util.Map;
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.util.ResourceLoader;
import org.apache.lucene.analysis.util.ResourceLoaderAware;
import org.apache.lucene.analysis.util.TokenizerFactory;
import org.wltea.analyzer.lucene.IKTokenizer;
/**
* 主要用于Solr分词使用
*
* @author niko
* @date 2012-12-25
* @version
*/
public class IKTokenizerFactory extends TokenizerFactory implements ResourceLoaderAware {
private boolean useSmart;
@Override
public void init(Map<String, String> args) {
super.init(args);
assureMatchVersion();
}
@Override
public Tokenizer create(Reader input) {
IKTokenizer ikTokenizer = new IKTokenizer(input, useSmart);
return ikTokenizer;
}
@Override
public void inform(ResourceLoader loader) throws IOException {
useSmart = getBoolean("useSmart", true);
}
}
schema.xml调用方法:
<fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.henry.IKTokenizerFactory" useSmart="true"/>
<!--
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
-->
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.henry.IKTokenizerFactory" useSmart="false"/>
<!--
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
-->
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
分享到:
相关推荐
Apache Solr 4 Cookbook Apache Solr 4 Cookbook Apache Solr 4 Cookbook Apache Solr 4 Cookbook Apache Solr 4 Cookbook
lucene4 solr4j arIk4
支持solr5.5 solr6.0中IK分词需要的资料
支持solr6.x的中文分词,对solr7的支持暂时没有测试过
针对中文进行修改的拼音分词器,很强大,支持首字母搜索、全拼搜索,首字母+全拼搜索!配置如下:<fieldtype name="text_pinyin" class="solr.TextField"> <tokenizer class="org.wltea.analyzer.solr....
ik-analyzer-solr7,支持 solr7,内含 jar 包和详细使用文档
通过继承Analyzer编写自定义类UseSmartIKAnalyzer和NotUseSmartIKAnalyzer,实现智能分词和最细粒度分词,支持solr4.7通过配置schema.xml实现不同的分词效果 <fieldType name="text_ik" class="solr.TextField"> ...
IKAnalyzer中文分词器本身已经不支持最新的solr 5,集成到solr中分词会报错,这里将解决了solr 5支持问题的最新IK包共享出来,希望能帮到各位! 附上IK在schema.xml中的配置: <fieldType name="text_ik" class="...
ik-analyzer-solr7(支持solr7),数据类型long改为plong
Apache Solr 4 Cookbook.pdf solr
solr中文分词器 IKAnalyzer 支持solr版本5.x到7.x 亲测可用,我用的是7.2版本
IK分词器,支持solr6.60高版本,支持智能分词和细粒度分词,经本人测试可以使用的,支持高版本,智能分词用IKCrudeAnalyzer
关于solr的资源里面都有关于solr的资源里面都有关于solr的资源里面都有关于solr的资源里面都有关于solr的资源里面都有
这是我自己反编译fix后,支持solr7.4高版本的定时增量任务(亲测solr7.4),下载下来开箱即用。低版本的没试过,估计低版本的solr配合之前apache-solr-dataimportscheduler-1.0.jar这些能行,不行就试试我这个。
solr.warsolr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包...
IKAnalyzer5.2.1根据IKAnalyzer2012FF_u1_custom基础上修改,支持lucence5.x以上版本。增加连续数字、字母、英语及其组合智能分词(可关闭isIndistinct)支持lucence5.x以上版本。配置文件:...
在做IK分词器与solr过滤器结合是时候遇到一些问题,<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/> 在网上页找了一些jar包或者class,最后找到一个合适的源码,解决了问题。 ...
solr-4-10-3.zip 大家也可以到http://archive.apache.org/dist/lucene/solr/中下载 只不过有点慢
SolrCloud使用 SolrCloud的集合(SolrCores)管理API 添加集合 http://localhost:8080/solr/admin/collections?action=CREATE&name=mycollection&numShards=1&replicationFactor=4 ...