今天花了一个下午一个晚上,参考了网上许多资料,终于把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\下 ,注意,是[color=red]solr[/color]的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分词了。
嗯,晚上就是这样过去的...

solr整合paoding分词注意的一些细节相关推荐

  1. solr php 中文分词,solr分词以及搜索

    1. solr配置solrconfig.xml solrconfig.xml这个配置文件可以在你下载solr包的安装解压目录的D:\solr-4.10.4\example\solr\collectio ...

  2. 给solr配置中文分词器

    Solr的中文分词器 中文分词在solr里面是没有默认开启的,需要我们自己配置一个中文分词器. 目前可用的分词器有smartcn,IK,Jeasy,庖丁.其实主要是两种,一种是基于中科院ICTCLAS ...

  3. [Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例二.

    为了更好的排版, 所以将IK分词器的安装重启了一篇博文,  大家可以接上solr的安装一同查看. [Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一: http://w ...

  4. Linux下安装和配置solr/tomcat/IK分词器 详细实例二.

    为了更好的排版, 所以将IK分词器的安装重启了一篇博文,  大家可以接上solr的安装一同查看. [Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一: http://w ...

  5. solr配置中文分词器

    solr配置中文分词器 配置IK分词器 可配置停用词.扩展词.同义词

  6. solrcloud 高可用集群搭建加solr整合hbase以及向ganglia报告度量

    一.环境准备 CentOS-6.4-x86_64-minimal.iso jdk-6u45-linux-i586-rpm.bin zookeeper-3.4.5.tar solr-4.6.0.zip ...

  7. 单机版Solr的中文分词器solr IK下载和配置、拓展词典、停用词典

    下载ik分词器 solr IK中文分词器下载地址 github地址下载(最新版本): https://github.com/magese/ik-analyzer-solr solr7版本的ik分词器: ...

  8. 搜索引擎分词:Nutch整合Paoding中文分词步骤详解

    搜索引擎+B2B平台+SNS网站=?, 一个三不像网站.偏偏投资人需要这样一个三不像网站.从4月份开始组建团队.时间一瞬2个月过去了.做B2B需要的就是大工作量和时间,而做搜索引擎光分词这块就搞的头大 ...

  9. Solr配置IK分词器

    配置步骤 下载分词器 上传文件 添加jar包 添加配置文件 添加分词器,配置业务域 测试分词器 第一步 下载IK分词器 第二步 上传文件 查看 第三步 添加jar包 到solr工程 cp IKAnal ...

最新文章

  1. 外挂学习之路(3)--- 内存遍历工具
  2. 更改 pandas dataframe 中两列的位置
  3. Flink UI: Flink 1.10 如何查看 数据源 的背压(反压)情况(消费kafka)
  4. 明晚7点,中科院专家带你走进智能计算系统的世界
  5. unity linux桌面环境,现在仍然可以在Ubuntu 20.04上安装Unity桌面环境
  6. 中国要做物联网技术的强国,而非大国
  7. Ubuntu14.04 64位安装iNode客户端
  8. Oracle10g 详细安装教程
  9. MOOC-首都师范-博弈论-焦宝聪-第六章-动态博弈学习笔记(五)
  10. 常见量化投资误区合集,量化交易新手脱坑指南 | 邢不行
  11. 2022年草根互联网圈较流行的副业汇总
  12. 计算机开机长响一声,电脑开机一声长响三声短响是什么原因?
  13. 看完后就知道如何提高网站的打开速度,受益非浅!
  14. VMware虚拟机 之 VMX进程已提前退出
  15. Node.js笔记--Day5
  16. 【open stack】openstack从入门到放弃
  17. Python标准库之正则表达式(re库)
  18. 香港之行——大学·精神·交通
  19. postgresql 遍历参数_《go语言从入门到入坟》json操作、文件操作
  20. 内网服务器安装docker

热门文章

  1. docker commit镜像以及数据卷技术
  2. 添加友情链接获取CF币
  3. Docker MSSQL 添加读取 MDF 文件
  4. shell实现大批量word转码然后分析相关字段
  5. ​万字长文阐述前端技术浪潮与应用
  6. 编写程序描述影视歌三栖艺人。需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。...
  7. 天线远场定义_天线场区划分的定义
  8. ES8新增的常用语法
  9. 树莓派计算器c语言,树莓派与Python实验9——Tkinter计算器实验
  10. 《Python编程:从入门到实战》(第2版)学习笔记 第5章 if语句