- 浏览: 1605258 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (603)
- T_java (145)
- T_script&ASP (51)
- T_C/C++ (25)
- T_PowerBuilder (11)
- T_Database (53)
- T_odoo (7)
- T_应用服务器 (50)
- T_专_条形码 (6)
- T_专_负载均衡器 (4)
- T_操作系统 (94)
- T_信息安全 (41)
- T_专_搜索引擎 (14)
- T_L_PHP (58)
- T_L_Delphi (18)
- T_L_.NET、C#、VisualStudio (25)
- T_L_Objective-C (6)
- T_移动开发 (53)
- T_网络 (109)
- T_大数据 (2)
- T_嵌入式 (2)
- T_小众技术 (24)
- T_未分类 (58)
- L_旅游印记 (1)
- L_生活随笔 (48)
- L_中国文化 (18)
- L_户外与生存 (0)
最新评论
-
csbean4004:
不知道哪传来得恶习,发帖子不好好发,故意弄错一些东西,很讨厌
让HTML5支持后置摄像头 -
withthewind:
终于找到一个可以用的了。。。
如何用VBA取得Word文档中的标题前面的序号 -
busbby:
兄弟,无法下载,说文件不完整
一个好用的Outlook ost格式文件转pst文件的工具 -
yijavakevin:
密码啊~解压密码多少?
一个二维条形码组件 -
vipbooks:
你给的那个链接根本无法下载,跳到官网看了下最新版12M,但点下 ...
十步以内完成精细web打印
今天有人说在Solr1.4里使用paoding2.0.4(可能是终结版了),无法实现正常的高亮显示。这个问题说难不难,说简单也不简单,我上次配置的时候,也花了一点时间测试,才找对合适的参数。今天既然有人问起来,我干脆在这里简单写一下,免得以后忘记。
闲话少叙,开始干活。
在Solr1.4出来之前,Paoding就已经停止开发了,所以Paoding分词器没有考虑与Solr1.4整合的功能,值得庆幸的是在网上,有前辈已经给我们铺了一条比较平坦的路了,具体讲,就是Bory.Chan前辈给我们封装了一个工厂类,通过使用这个工厂类,就可以比较简单地实现Solr1.4和paoding的友好相处。这个工厂类的源码我就不贴了,贴个地址,表示对前辈的尊重:http://blog.chenlb.com/2009/12/solr-1-4-with-paoding.html
下载这个工厂类,编译。
然后再修改solr/conf/schemal.xml文件,在其中找到这一段:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <!-- in this example, we will only use synonyms at query time <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> --> <!-- Case insensitive stop word removal. add enablePositionIncrements=true in both the index and query analyzers to leave a 'gap' for more accurate phrase queries. --> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumb ers="1" catenateAll="0" splitOnCaseChange="1"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumb ers="0" catenateAll="0" splitOnCaseChange="1"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> </analyzer> </fieldType>
改成如下:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="com.chenlb.solr.paoding.PaodingTokenizerFactory" /> <!-- in this example, we will only use synonyms at query time <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> --> <!-- Case insensitive stop word removal. add enablePositionIncrements=true in both the index and query analyzers to leave a 'gap' for more accurate phrase queries. --> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumb ers="1" catenateAll="0" splitOnCaseChange="1"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> </analyzer> <analyzer type="query"> <tokenizer class="com.chenlb.solr.paoding.PaodingTokenizerFactory" mode="max-word-length"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumb ers="0" catenateAll="0" splitOnCaseChange="1"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> </analyzer> </fieldType>
要注意的是,Bory.Chan给的例子是在“index”配置中,设置mode="max-word-length",而在“query”则不设置,经过我实际测试,发现这两个参数位置互换一下才能达到比较好的效果。
另外,这个工厂类只支持“max-word-length”和“非max-word-length”两种模式,而“max-word-length”这个单词容易写错了,所以我改造了一下PaodingTokenizerFactory,把这个参数设置成一个boolean型的参数。
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.Tokenizer; import org.apache.solr.analysis.BaseTokenizerFactory; import cn.com.pansky.otp3.lucene.analyzer.paoding.SolrPaodingTokenizer; /** * 基于Paoding分词器的分词工厂 * @author http://blog.chenlb.com/ * @Modified by BrokenStone 2010-08-03 * */ public class PaodingTokenizerFactory extends BaseTokenizerFactory { public static final String MOST_WORDS_MODE = "most-words"; //最多切分 默认模式 public static final String MAX_WORD_LENGTH_MODE = "max-word-length"; //按最大切分 private boolean isMaxWordLength = false; //是否采用“按最大切分”模式分词,默认是按“最多切分”模式分词 public boolean isMaxWordLength() { return isMaxWordLength; } public void setMaxWordLength(boolean isMaxWordLength) { this.isMaxWordLength = isMaxWordLength; } public Tokenizer create(Reader input) { return new SolrPaodingTokenizer(input, PaodingMaker.make(), createTokenCollector()); } private TokenCollector createTokenCollector() { if(isMaxWordLength) return new MaxWordLengthTokenCollector(); else return new MostWordsTokenCollector(); } }
发表评论
-
一堆非关系数据库
2013-03-04 16:35 1062发现一个网站,里面里堆的非关系数据库,如果全弄熟了,该 ... -
Solr的扩展
2013-02-25 22:49 1177Scaling up Large Scale Search ... -
Solr学习资料
2013-02-25 22:11 1411这篇博客含有海量资料,学习solr必备字典。大概看完solr ... -
WordPress给文章添加固定字段(转)
2012-10-25 08:13 1650应花生奶油 网友的求助,特意研究了一下如何给WordP ... -
虚拟化、云计算、开放源代码及其他 (转)
2012-10-19 21:29 1095借国庆长假的机会写了这篇长文,全面地整理了个人从虚拟化 ... -
Web开发中需要了解的东西
2012-02-24 16:34 1222本来出处: http://blog.chinaunix.ne ... -
HTMLParser使用
2011-11-30 15:48 1320HTMLParser使用 HTMLParser具有小巧,快速的 ... -
SolrJ的javabin格式分析
2011-01-04 10:15 2202Solr中对于返回数据格式有xml、json、javab ... -
Lucene搜索语法中类似SQL语法中IN的用法
2010-11-03 09:31 1622今天摸索了一个Lucene中类似于SQL语法中 IN 的用法: ... -
Solr Flux——把Solr重新包装成RDBMS
2010-10-21 17:16 1337Solr Flux是一个使用类SQL语句来从Solr服务器搜索 ... -
Solr(Lucene)评分机制炒冷饭
2010-09-09 13:17 0上周,基于Solr的全文搜索系统上线了。昨天,客户 ... -
Lucene CBIR
2010-08-31 20:29 2295Lire(Lucene Image REtrieval) Lu ... -
IKAnalyzer3.2.0 Stable版使用自定义词典出现数组下标越界异常
2010-07-22 15:05 2199使用环境: Solr1.4 Lucene2.9.1 或 L ... -
SolrJ遭遇"Broken pipe"
2010-07-19 15:27 3366在项目中用到SolrJ访问Solr服务器实现全文检索功能,前段 ...
相关推荐
Solr3.2 + Paoding中文分词的搜索引擎是一个针对中文文档进行高效检索的解决方案,结合了Apache Solr 3.2版本与Paoding分词器的优势。Apache Solr是基于Lucene的开源搜索服务器,提供了更高级别的API和配置选项,而...
Solr 1.4 是一个功能强大的企业级搜索引擎平台,它基于Apache Lucene(一个高性能全文检索库)构建而成。Solr 1.4 版本在2009年由Packt Publishing出版的一本书中被详细介绍,该书由David Smiley和Eric Pugh共同编写...
Solr是中国最流行的全文搜索引擎框架Apache Lucene的一个扩展,它提供了高级的搜索功能,并且能够进行复杂的全文检索、分布式搜索和处理大量数据。在Solr中,分词器(Tokenizer)是文本分析的重要组成部分,它负责将...
### Window下Solr1.4安装部署的知识点详解 #### 一、Solr简介 Apache Solr 是一个高性能、基于Lucene的全文检索服务。它提供了丰富的功能集,包括高度可扩展性、易于部署和强大的搜索功能。Solr 1.4版本是在2009年...
在本案例中,我们关注的是`ik-analyzer-solr7`,这是一个专门为 Apache Solr 7 版本定制的 ik 分词器实现。 Apache Solr 是一个流行的开源全文搜索服务器,它提供了强大的搜索功能和丰富的数据分析能力。Solr 7 ...
《Solr1.4教程》全面解析 在信息化飞速发展的今天,企业对高效、精准的搜索需求日益增强。Solr作为一款开源的企业级搜索引擎,因其强大的功能和易用性,逐渐成为众多企业的首选。本教程将深入探讨Solr1.4版本,帮助...
Solr是Apache Lucene项目的一个子项目,是一个高性能、全文本搜索服务器,广泛应用于企业级搜索引擎搭建。在Solr 5.x和6.x版本中,中文分词器扮演着至关重要的角色,它负责将中文文本拆分成有意义的词汇,便于索引和...
能兼容solr-4.10.2的分词器,大礼包全放送.包括IK分词器,mmseg4j分词器,庖丁分词器.都是经本人测试可用,其中mmseg4j与庖丁都是下载源码,修改重编译并测试生成的.希望大家喜欢.至于与solr的整合方式,网上很多,这里就不...
Solr7的IK分词器是针对中文文本检索的一个重要工具,它在全文检索领域扮演着关键角色。IK Analyzer是一款开源的、适用于Java环境的中文分词组件,专为提高中文信息处理的效率和准确性而设计。在Solr7版本中,IK分词...
"Solr6.3 IK分词器"就是这样一个工具,专为处理中文文本而设计,它被集成到Solr中以优化对中文内容的处理。 IK分词器,全称为"Intelligent Chinese Analyzer",由Java编写,是Solr和Elasticsearch中的一个流行中文...
Solr6.6.0中的IK分词器是用于对中文文本进行精细化分词的工具,它是基于Apache Lucene的开源搜索引擎项目Solr的一个插件。这个插件的主要任务是将中文句子分解成一系列有意义的词语,以便于索引和搜索。在Solr中,...
paoding广泛应用于搜索引擎、推荐系统、信息检索、文本挖掘等领域,对于需要处理大量中文文本的系统,如社交媒体分析、新闻聚合等,paoding是一个理想的解决方案。 **二、环境搭建** 1. **JDK安装** 首先确保你...
最新版solr4.3的IK分词器,中文分词效果良好!对付一般的大众分词没有问题
在标题“solr-4.10.3+ik分词器”中,我们看到的是Solr的一个具体版本——4.10.3,以及与之配合使用的IK分词器。这个版本的Solr包含了多项优化和改进,例如更稳定的性能、增强的搜索特性以及对各种数据源的更好支持。...
在Solr 5.0.0中使用IK分词器,可以显著提高中文文本的检索效果,通过智能分词和新词识别,使得用户输入的关键词能够更准确地匹配到文档中的内容。同时,通过调整分词器的配置,还能进一步优化搜索体验,满足不同的...
描述中提到的"solr7.3.1种需要的中文IK分词器",IK(Intelligent Chinese Analyzer)分词器是一个强大的、成熟的中文分词组件,广泛应用于各种Java开发的搜索系统中。IK分词器支持多种分词模式,包括精确模式、全...
一个Solr集群是由多个独立的Solr实例组成,它们通过Zookeeper进行协调和管理。Zookeeper是一个分布式的协调服务,用于处理集群中的配置管理、节点发现和一致性问题。在Solr集群中,每个Solr实例被称为一个"SolrCore...
Solr6.0是Apache Solr的一个版本,它是一个开源的全文搜索引擎,广泛应用于各种文本检索场景。在Solr中,分词器是处理输入文本...记住,优化分词器的过程是一个持续迭代的过程,需要根据用户的反馈和检索效果不断调整。