本文配置环境:solr4.6+ IK2012ff +tomcat7

在Solr4.0发布以后,官方取消了BaseTokenizerFactory接口,而直接使用Lucene Analyzer标准接口TokenizerFactory。因此IK分词器2012 FF版本也取消了org.wltea.analyzer.solr.IKTokenizerFactory类。

这里IK的文档给了一个solr的配置如下:

<fieldType name="text" class="solr.TextField">

<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>

</fieldType>

这个配置不能实现分词器的智能选择和同义词、停用词配置功能。

这里通过开发一个IKAnalyzerTokenizerFactory类继承Lucene Analyzer标准接口TokenizerFactory来实现上述功能。

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;

import org.apache.lucene.util.AttributeSource.AttributeFactory;

public class IKAnalyzerTokenizerFactory extends TokenizerFactory{

private boolean useSmart;

public boolean useSmart() {

return useSmart;

}

public void setUseSmart(boolean useSmart) {

this.useSmart = useSmart;

}

public IKAnalyzerTokenizerFactory(Map<String, String> args) {

super(args);

assureMatchVersion();

this.setUseSmart(args.get("useSmart").toString().equals("true"));

}

@Override

public Tokenizer create(AttributeFactory factory, Reader input) {

Tokenizer _IKTokenizer = new IKTokenizer(input , this.useSmart);

return _IKTokenizer;

}

}

将IKAnalyzerTokenizerFactory编译放入到IK2012ff的jar包中。

在schema.xml文件中配置:

<!--IKAnalyzer-->

<fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100">

<analyzer type="index">

<tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerTokenizerFactory"  useSmart="false"/>

<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />

</analyzer>

<analyzer type="query">

<tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerTokenizerFactory"  useSmart="true"/>

<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />

<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>

</analyzer>

</fieldType>

注意:synonyms.txt 在添加中文后需要保存为无BOM UTF-8格式,否则分词报错。

效果如下:

solr4.x配置IK2012FF智能分词+同义词配置的更多相关文章

  1. Solr 06 - Solr中配置使用IK分词器 (配置schema.xml)

    目录 1 配置中文分词器 1.1 准备IK中文分词器 1.2 配置schema.xml文件 1.3 重启Tomcat并测试 2 配置业务域 2.1 准备商品数据 2.2 配置商品业务域 2.3 配置s ...

  2. 2.IKAnalyzer 中文分词器配置和使用

    一.配置 IKAnalyzer 中文分词器配置,简单,超简单. IKAnalyzer 中文分词器下载,注意版本问题,貌似出现向下不兼容的问题,solr的客户端界面Logging会提示错误. 给出我配置 ...

  3. 真分布式SolrCloud+Zookeeper+tomcat搭建、索引Mysql数据库、IK中文分词器配置以及web项目中solr的应用(1)

    版权声明:本文为博主原创文章,转载请注明本文地址.http://www.cnblogs.com/o0Iris0o/p/5813856.html 内容介绍: 真分布式SolrCloud+Zookeepe ...

  4. 聊聊 elasticsearch 之分词器配置 (IK+pinyin)

    系统:windows 10 elasticsearch版本:5.6.9 es分词的选择 使用es是考虑服务的性能调优,通过读写分离的方式降低频繁访问数据库的压力,至于分词的选择考虑主要是根据目前比较流 ...

  5. Solr学习总结(八)IK 中文分词的配置和使用

    最近,很多朋友问我solr 中文分词配置的问题,都不知道怎么配置,怎么使用,原以为很简单,没想到这么多朋友都有问题,所以今天就总结总结中文分词的配置吧. 有的时候,用户搜索的关键字,可能是一句话,不是 ...

  6. Elasticsearch初步使用(安装、Head配置、分词器配置)

    目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.ElasticSearch简单说明 a.ElasticSearch是一个基于Lu ...

  7. Solr入门之(8)中文分词器配置

    Solr中虽然提供了一个中文分词器,但是效果很差,可以使用IKAnalyzer或Mmseg4j 或其他中文分词器. 一.IKAnalyzer分词器配置: 1.下载IKAnalyzer(IKAnalyz ...

  8. CentOS 配置solr中文分词器

    第一步:使用IK-Analyzer.把分析器的文件夹上传到服务器. 第二步:需要把分析器的jar包添加到solr工程中. [root@bogon IK Analyzer 2012FF_hf1]# cp ...

  9. Solr6.5.0配置中文分词器配置

    准备工作: solr6.5.0安装成功 1.去官网https://github.com/wks/ik-analyzer下载IK分词器 2.Solr集成IK a)将ik-analyzer-solr6.x ...

随机推荐

  1. feof使用注意

    [feof使用注意] 以下是错误的用法,發生狀況->多讀一次?: FILE* pf; while(!feof(pf)){ //fread 讀取 //資料處理 } feof是發生在fread使用" ...

  2. 使用MSSQL,连接oracle,对oracle数据进行操作

    EXEC sp_addlinkedserver--创建链接服务器.链接服务器让用户可以对 OLE DB 数据源进行分布式异类查询. @server = 'Mktg',--要创建的链接服务器的名称.s ...

  3. POJ 3170 Knights of Ni (暴力,双向BFS)

    题意:一个人要从2先走到4再走到3,计算最少路径. 析:其实这个题很水的,就是要注意,在没有到4之前是不能经过3的,一点要注意.其他的就比较简单了,就是一个双向BFS,先从2搜到4,再从3到搜到4, ...

  4. C# 实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法

    /// <summary> /// 实现窗体的最小化 /// </summary> protected override CreateParams CreateParams { ...

  5. 将php配置为服务

    将以下代码保存为php-fpm,修改路径为自己的路径(有php.ini的) #!/bin/bash # # Startup script for the PHP-FPM server. # # chk ...

  6. 创建类模式(四):原型(Prototype)

    定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建 ...

  7. JdkDynamicAopProxy源码

     JdkDynamicAopProxy是通过接口实现动态代理类,主要方法是getProxy(ClassLoader classLoader), 代理类生成之后再调用目标方法时就会调用invoke方法. ...

  8. Gartner:Hype Cycle for Emerging Technologies-2013

      The “Hype Cycle for Emerging Technologies” report is the longest-running annual Hype Cycle, provid ...

  9. 3DSlicer源代码编译过程vs2008+windows xp [转]

    一 下载QT源代码编译 1.  简述   在 Windows2000/xp/vista 下,安装 VS2008, QT 4.7.2 :并在 VS2008上建立 QT 的集成开发环境,利用 VS2008 ...

  10. 数据库 SQL :有关 NULL 值引发 TRUE、FALSE、UNKNOW 三值逻辑

    在 Java.C# 中,相信如果是 boolean 类型值,只有两种选择 true.false.然而,在 SQL 查询中,NULL 值的引入,使得新增了 UNKNOW ,因此,就产生了 TRUE.FA ...