- 浏览: 958095 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (385)
- 搜索引擎学习 (62)
- 算法 (1)
- 数据库 (15)
- web开发 (38)
- solr开发 (17)
- nutch 1.2 系统学习 (8)
- cms (1)
- 系统架构 (11)
- linux 与 unix 编程 (16)
- android (15)
- maven (1)
- 关注物流 (1)
- 网址收集 (1)
- 分布式,集群 (1)
- mysql (5)
- apache (1)
- 资料文档备份 (7)
- 上班有感 (0)
- 工作流 (15)
- javascript (1)
- weblogic (1)
- eclipse 集成 (1)
- JMS (7)
- Hibernate (1)
- 性能测试 (1)
- spring (6)
- 缓存cache (1)
- mongodb (2)
- webservice (1)
- HTML5 COCOS2D-HTML5 (1)
- BrowserQuest (2)
最新评论
-
avi9111:
内陷到android, ios, winphone里面也是随便 ...
【HTML5游戏开发】二次开发 BrowserQuest 第一集 -
avi9111:
呵呵,做不下去了吧,没有第二集了吧,游戏是个深坑,谨慎进入,其 ...
【HTML5游戏开发】二次开发 BrowserQuest 第一集 -
excaliburace:
方案3亲测完全可用,顺便解决了我其他方面的一些疑问,非常感谢
spring security 2添加用户验证码 -
yuanliangding:
Spring太强大了。
Spring Data JPA 简单介绍 -
小高你好:
什么是hibernate懒加载?什么时候用懒加载?为什么要用懒加载?
关键字: solr lucene 搭建 中文分词 http://www.dzxiaoshuo.com
http://www.dzxiaoshuo.com
这篇文章,主要说的是 怎么在solr中加入中文分词,参考了一些文章,但是还是花了不少时间才搞出的。可能是大侠们太牛了,所以很多细节东西都没有写出来!但是要指出的是很多文章都是抄来抄去的!
入正题:
在上面的一个文章中,已经使solr跑起来了,在上面的基础上,加入中文分词。我用的是paoding分词器!
1》请下好paoding分词器,下载地址:
http://code.google.com/p/paoding/downloads/list,在这里要非常感谢paoding作者:qieqie
在使用paoding的时候要注意:paoding的dic位置,也就是字典的位置,有两种办法解决:
1) 在系统环境变量中加入PAODING_DIC_HOME这个变量,值为paoding压缩包下面的dic的解压位置。
2)paoding-analysis.jar里面有个paoding-dic-home.properties文件,指定dic也可,但是要重新编译这个jar包,我采用的后面一种办法,只要每次固定好dic位置,部署还不是很不方便,设置环境变量我比较反感
2》建立文件
将该文件打包,如果你不愿打包,请到附件里面下吧。
请将两个jar,一个是这个,还有一个是 paoding-analysis.jar 放到tomcat的webapps\solr\WEB-INF\lib\下
3》更改schema.xml文件,使分词器起到作用。如果你看过前面一个文章,schema.xml的具体位置在c:\solr-tomcat\solr\conf\下面。
更改内容为:
<!-- --> 里面的为需要更改的内容
4》重启你的tomcat ,ok!
附: [Solr分词顺序]Solr建立索引和对关键词进行查询都得对字串进行分词,在向索引库中添加全文检索类型的索引的时候,Solr会首先用空格进行分词,然后把分词结果依次使用指定的过滤器进行过滤,最后剩下的结果才会加入到索引库中以备查询。分词的顺序如下:
索引
1:空格whitespaceTokenize
2:过滤词StopFilter
3:拆字WordDelimiterFilter
4:小写过滤LowerCaseFilter
5:英文相近词EnglishPorterFilter
6:去除重复词RemoveDuplicatesTokenFilter
查询
1:查询相近词
2:过滤词
3:拆字
4:小写过滤
5:英文相近词
6:去除重复词
以上是针对英文,中文的除了空格,其他都类似
下篇文章可能会讲一下solr的配置
这篇文章,主要说的是 怎么在solr中加入中文分词,参考了一些文章,但是还是花了不少时间才搞出的。可能是大侠们太牛了,所以很多细节东西都没有写出来!但是要指出的是很多文章都是抄来抄去的!
入正题:
在上面的一个文章中,已经使solr跑起来了,在上面的基础上,加入中文分词。我用的是paoding分词器!
1》请下好paoding分词器,下载地址:
http://code.google.com/p/paoding/downloads/list,在这里要非常感谢paoding作者:qieqie
在使用paoding的时候要注意:paoding的dic位置,也就是字典的位置,有两种办法解决:
1) 在系统环境变量中加入PAODING_DIC_HOME这个变量,值为paoding压缩包下面的dic的解压位置。
2)paoding-analysis.jar里面有个paoding-dic-home.properties文件,指定dic也可,但是要重新编译这个jar包,我采用的后面一种办法,只要每次固定好dic位置,部署还不是很不方便,设置环境变量我比较反感
2》建立文件
- package com.yeedoo.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");
- }
- }
package com.yeedoo.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"); } }
将该文件打包,如果你不愿打包,请到附件里面下吧。
请将两个jar,一个是这个,还有一个是 paoding-analysis.jar 放到tomcat的webapps\solr\WEB-INF\lib\下
3》更改schema.xml文件,使分词器起到作用。如果你看过前面一个文章,schema.xml的具体位置在c:\solr-tomcat\solr\conf\下面。
更改内容为:
- <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
- <analyzer type="index">
- <!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>-->
- <tokenizer class="com.yeedoo.slor.tokenizer.ChineseTokenizerFactory" mode="most-words"/>
- ··· ···
- </analyzer>
- <analyzer type="query">
- <!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>-->
- <tokenizer class="com.yeedoo.slor.tokenizer.ChineseTokenizerFactory" mode="most-words"/>
- ··· ···
- </analyzer>
- </fieldType>
<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>--> <tokenizer class="com.yeedoo.slor.tokenizer.ChineseTokenizerFactory" mode="most-words"/> ··· ··· </analyzer> <analyzer type="query"> <!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>--> <tokenizer class="com.yeedoo.slor.tokenizer.ChineseTokenizerFactory" mode="most-words"/> ··· ··· </analyzer> </fieldType>
<!-- --> 里面的为需要更改的内容
4》重启你的tomcat ,ok!
附: [Solr分词顺序]Solr建立索引和对关键词进行查询都得对字串进行分词,在向索引库中添加全文检索类型的索引的时候,Solr会首先用空格进行分词,然后把分词结果依次使用指定的过滤器进行过滤,最后剩下的结果才会加入到索引库中以备查询。分词的顺序如下:
索引
1:空格whitespaceTokenize
2:过滤词StopFilter
3:拆字WordDelimiterFilter
4:小写过滤LowerCaseFilter
5:英文相近词EnglishPorterFilter
6:去除重复词RemoveDuplicatesTokenFilter
查询
1:查询相近词
2:过滤词
3:拆字
4:小写过滤
5:英文相近词
6:去除重复词
以上是针对英文,中文的除了空格,其他都类似
下篇文章可能会讲一下solr的配置
- yeedoo-tokenizer.jar (1.6 KB)
- 下载次数: 144
发表评论
-
IK的整个分词处理过程【转】
2013-01-08 12:48 1126首先,介绍一下IK的整个分词处理过程: 1. Lucene的 ... -
solr 4 分词报错 This Functionality requires the /analysis/field Handler to be regist
2013-01-08 11:43 2142This Functionality requires the ... -
solr multivalued 说明
2013-01-08 09:15 4846solr的schema.xml配置文件在配置field的时候有 ... -
solr 处理数据库数据索引 DataImportHandler 报内存不足,解决方案
2010-06-27 10:31 3098通过数据库,批量建立索引,如果数据量大,则会报内 ... -
solr 范围查询
2010-06-27 01:50 6604solr的范围查询 TO //s ... -
solr 通过 数据库导入 建立索引
2010-06-26 22:47 2372今天写错一个单词,忙会了,一下午,因为本人也是刚接触,所以对一 ... -
solrj 的使用总结
2010-06-26 22:45 27791、solrserver的获取 1.1CommonsHttp ... -
通过dataimport 建立solr索引
2010-06-26 14:01 5723今天写错一个单词,忙会了,一下午,因为本人也是刚接触,所以对一 ... -
SOLR 中 Schema.xml 的filedType 的一些属性的理解 [转]备注起来
2010-06-24 23:17 2654from matching across instances. ... -
solr 处理数据库数据索引 DataImportHandler 的使用[转]
2010-06-24 21:10 19951、编辑 solrconfig.xml 注册一个请求 uri ... -
solr morelikethis功能
2010-05-06 15:37 3165在 Google 上尝试一个查询,您会注意到每一个结果都包含 ... -
利用SOLR搭建企业搜索平台 之四(MultiCore)[转]
2010-04-22 21:54 1839利用SOLR搭建企业搜索平 ... -
利用SOLR搭建企业搜索平台 之三(配置文件)
2010-04-22 21:51 1406关键字: solr lucene 搭建 ... -
利用SOLR搭建企业搜索平台 之一(运行solr)[转]
2010-04-22 21:49 1822在网络上找了很多的关 ... -
使用solr搭建你的全文检索[转]
2010-04-22 20:43 1408Solr 是一个可供企业使用的、基于 Lucene 的开箱即用 ... -
Solr的检索运算符[转]
2010-04-22 20:39 1619[Solr的检索运算符]? “:” 指定字段查指定值,如返回所 ...
相关推荐
本文将详细阐述如何利用SOLR搭建一个企业搜索平台,包括所需环境、配置步骤以及中文分词的设置。 一、SOLR搭建企业搜索平台 1. **运行环境** - **运行容器**:Tomcat 6.0.20 - **Solr版本**:apache-solr-1.4.0 ...
Solr是Apache Lucene项目的一个子项目,是一个高性能、全文本搜索服务器,广泛应用于企业级搜索引擎搭建。在Solr 5.x和6.x版本中,中文分词器扮演着至关重要的角色,它负责将中文文本拆分成有意义的词汇,便于索引和...
Solr搜索引擎的使用介绍 Solr,全称为Apache Solr,是Apache软件基金会的一个开源项目,基于Java开发,是一款...通过理解其核心概念、特性以及应用场景,我们可以充分利用Solr来提升系统的搜索性能,优化用户体验。
Solr是中国Apache软件基金会开发的一款开源全文搜索引擎,它基于Java平台,可以实现高效、可扩展的搜索和分析功能。...通过深入理解和实践,可以进一步掌握如何利用Solr构建高性能的企业级搜索解决方案。
二、Solr搭建 1. 安装Solr:首先从Apache官方网站下载最新版本的Solr,解压后配置环境变量,确保Java环境已安装并设置好。 2. 启动Solr:运行bin/solr start命令启动单节点服务,或者在SolrCloud模式下使用bin/solr ...
Solr全文检索环境搭建 Apache Solr是一款基于Java的开源搜索服务器,专为高效全文检索、拼写检查、高亮显示结果以及...记住,实践是掌握技术的关键,不断尝试和探索,你将能更好地利用Solr提升你的应用的搜索体验。
Solr是一个独立的基于全文检索的企业级搜索应用服务器,它支持通过HTTP利用XML将文档加载到搜索集合中,用户可以通过HttpGet操作发送查找请求,并得到搜索的返回结果。在Java后台开发中,Solr通过SolrJ客户端库与...
ANSJ(Automatic NLP Segmentation and Judgement)是一款优秀的中文分词和词性标注工具,而Solr则是Apache基金会开源的全文搜索和分析引擎。当ANSJ与Solr相结合时,可以构建出强大的中文搜索引擎。本文将深入探讨...
- **1.2.5 缓存**:Solr利用多种缓存机制来提高搜索响应速度,例如查询结果缓存、文档缓存等。 - **1.2.6 复制**:Solr支持主/从架构,通过复制功能可以在多个服务器间同步索引数据,确保数据的一致性和冗余。 - **...
Solr是Apache软件基金会开发的一款高性能、全文搜索引擎,它提供了分布式搜索、索引和分析大量数据的能力。在本文中,我们将深入探讨如何自己搭建一个Solr环境,以及在这个过程中涉及的关键知识点。 首先,我们需要...
标题 "sorlr + tomcat+ 庖丁解牛中文分词 配置文档" 提到的是一个关于在Apache Solr中集成Tomcat服务器,并利用庖丁解牛中文分词工具进行中文处理的配置教程。这个配置过程对于搭建支持中文搜索的Solr环境至关重要。...
**Apache Solr** 是一个高性能、基于 Lucene 的全文检索服务系统,广泛应用于互联网企业的搜索服务中。Solr 提供了高度可扩展且稳定的搜索功能,并支持多种集成方式,易于开发人员上手使用。 #### 二、Apache Solr ...
在结合Tomcat9作为应用服务器后,可以提供一个稳定且可扩展的平台,用于搭建企业的全文检索服务。本配置成功案例主要涉及了几个关键点:Solr8的安装与配置、Tomcat9的部署、实时数据库批量更新以及IK中文分词器的...
Apache Solr 7.5 官方文档是一份全面介绍如何安装、配置及管理 Solr 的手册,旨在帮助用户从零开始搭建并高效利用 Solr 的强大功能。 #### 主机与端口示例 文档提供了具体的主机和端口示例,帮助用户更好地理解 ...
Apache Solr是一款开源的企业级全文搜索引擎,由Apache软件基金会开发,基于Java语言,具有高效、可扩展的特点。它为大型、分布式搜索应用提供了强大的支持,包括文档检索、拼写建议、高亮显示搜索结果、近似搜索等...
而Solr则是一个完整的搜索引擎服务,它可以独立运行,适合构建企业级搜索解决方案,特别适用于快速搭建站内搜索功能。Solr提供了更多高级特性,如多核心(Core)管理、数据导入处理、丰富的查询语法等。 【Solr下载...
总之,Solr 是一个强大的全文搜索引擎,通过与 Lucene 结合,我们可以轻松地搭建搜索服务,并支持中文搜索。理解其工作原理,正确配置服务器和索引,是利用 Solr 实现高效搜索的关键。同时,选择合适的中文分词工具...