- 浏览: 127631 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
saieuler:
最近想学,标记一下
Programming.Collective.Intelligence中对常用机器学习算法的总结 -
backsnow:
Primal中,显式计算Hessian矩阵的复杂度为nd^2, ...
svm的复杂度 -
backsnow:
调试运行时报~/workspace/mahout/exampl ...
mahout在eclipse下的开发环境 -
backsnow:
真见鬼,之前中文论文用latex打开变成乱码,把编码改一下再改 ...
Latex简历模板下载位置 -
backsnow:
我在将当前用户加入hadoop组的时候发现原来所属的组不见了, ...
ubuntu中用户组的问题
Solr 是一个可供企业使用的、基于 Lucene 的开箱即用的搜索服务器。对Lucene不熟?那么建议先看看下面两篇文档:
实战 Lucene ,第 1 部分: 初识 Lucene:http://www.ibm.com/developerworks/cn/java/j-lo-lucene1/
用 Lucene 加速Web搜索应用程序的开发:http://www.ibm.com/developerworks/cn/web/wa-lucene2/
一、 solr 介绍
solr 是基于Lucene Java搜索库的企业级全文搜索引擎,目前是apache的一个项目。它的官方网址在http://lucene.apache.org/solr/ 。solr需要运行在一个 servlet 容器里,例如 tomcat5.5 。 solr 在 lucene 的上层提供了一个基于 HTTP/XML 的 Web Services ,我们的应用需要通过这个服务与 solr 进行交互。
二、 solr 安装和配置
关于solr的安装和配置,这里也有两篇非常好的文档,作者同时也 是 Lucene Java 项目的提交人和发言人:
使用 Apache Solr 实现更加灵巧的搜索: http://www.ibm.com/developerworks/cn/java/j-solr1/index.html
http://www.ibm.com/developerworks/cn/java/j-solr2/index.html
下面主要说说需要注意的地方。
Solr 的安装非常简单,下载 solr 的 zip 包后解压缩将 dist 目录下的 war 文件改名为 solr.war 直接复制到 tomcat5.5 的 webapps 目录即可。注意一定要设置 solr 的主位置。有三种方法。我采用的是 在tomcat里配置java:comp/env/solr /home的一个JNDI指向solr的主目录(example目录下),建立/tomcat55/conf/Catalina/localhost /solr.xml文件。
< Environment name ="solr/home" type ="java.lang.String" value ="D:/solr/solr" override ="true" />
</ Context >
观察这个指定的solr主位置,里面存在两个文件夹:conf和 data。其中conf里存放了对solr而言最为重要的两个配置文件schema.xml和solrconfig.xml。data则用于存放索引文 件。
schema.xml 主要包括 types 、 fields 和其他的一些缺省设置。
solrconfig.xml 用来配置 Solr 的一些系统属性,例如与索引和查询处理有关的一些常见的配置选 项,以及缓存、扩展等等。
上面的文档对这两个文件有比较详细的说明,非常容易上手。注意到 schema.xml 里有一个
的配置,这里将 url 字段作为索引文档的唯一标识符,非常重要。
三、 加入中文分词
对全文检索而言,中文分词非常的重要,这里采用了qieqie庖丁分词(非常不错:))。集成非常的容易,我下载的 是2.0.4-alpha2版本,其中它支持最多切分和按最大切分。创建自己的一个中文TokenizerFactory继承自solr的 BaseTokenizerFactory。
* Created by IntelliJ IDEA.
* User: ronghao
* Date: 2007-11-3
* Time: 14:40:59
* 中文切词 对庖丁切词的封装
*/
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 " ));
}
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 " );
}
}
在schema.xml的字段text配置里加入该分词器。
< analyzer type ="index" >
< tokenizer class ="com.ronghao.fulltextsearch.analyzer.ChineseTokenizerFactory" mode ="most-words" />
< filter class ="solr.StopFilterFactory" ignoreCase ="true" words ="stopwords.txt" />
< filter class ="solr.WordDelimiterFilterFactory" generateWordParts ="1" generateNumberParts ="1" catenateWords ="1" catenateNumbers ="1" catenateAll ="0" />
< filter class ="solr.LowerCaseFilterFactory" />
< filter class ="solr.RemoveDuplicatesTokenFilterFactory" />
</ analyzer >
< analyzer type ="query" >
< tokenizer class ="com.ronghao.fulltextsearch.analyzer.ChineseTokenizerFactory" mode ="most-words" />
< filter class ="solr.SynonymFilterFactory" synonyms ="synonyms.txt" ignoreCase ="true" expand ="true" />
< filter class ="solr.StopFilterFactory" ignoreCase ="true" words ="stopwords.txt" />
< filter class ="solr.WordDelimiterFilterFactory" generateWordParts ="1" generateNumberParts ="1" catenateWords ="0" catenateNumbers ="0" catenateAll ="0" />
< filter class ="solr.LowerCaseFilterFactory" />
< filter class ="solr.RemoveDuplicatesTokenFilterFactory" />
</ analyzer >
</ fieldtype >
</ types >
完成后重启tomcat,即可在http://localhost:8080/solr/admin/analysis.jsp
体验到庖丁的中文分词。注意要将paoding-analysis.jar复制到solr的lib下,注意修改 jar包里字典的home。
四、 与自己应用进行集成
Solr 安装完毕,现在可以将自己的应用与solr集成。其实过程非常的简单,应用增加数据--> 根据配置的字段构建add的xml文档 --> post 至solr/update。
应用删除数据 à 根据配置 的索引文档唯一标识符构建delete的xml文档 --> post 至solr/update。
检索数据 à 构建查询 xml—>get至/solr/select/--> 对solr返回的xml进行处理 --> 页面展现。
具体的xml格式可以在solr网站找到。另外就是solr支持高亮显示,非常方便。
关于中文,solr 内核支持 UTF-8 编码,所以在 tomcat 里的 server.xml 需要进行配置
另外,向solr Post请求的时候需要转为utf-8编码。对solr 返回的查询结果也需要进行一次utf-8的转码。检索数据时对查询的关键字也需要转码,然后用“+”连接。
for (String str : array) {
result = result + URLEncoder.encode(str, " UTF-8 " ) + " + " ;
}
http://www.blogjava.net/ronghao 荣浩原创,转载请注明出处:)
发表评论
-
pageRank计算公式的由来
2011-10-05 14:10 2059经常看到各种介绍pageran ... -
Sphinx Mysql Full-Search速成指南
2011-08-26 11:41 806Sphinx Mysql Full-Searc ... -
mahout在eclipse下的开发环境
2011-07-30 11:27 4749首先将源码转移到~/workspace下,目标文件夹为maho ... -
mahout安装配置
2011-07-27 20:41 1597http://log.medcl.net/item/2011/ ... -
通过实际应用学习hadoop
2011-05-15 18:58 0我首先从ivory这个开源的信息检索研究工具开始研究,对它感兴 ... -
备份记录
2011-04-06 09:13 715/nutch-1.2做了一个备份到~/petrelli/nut ... -
nutch的配置文件理解
2011-03-21 11:55 1148nutch的配置文件我们可以从Crawl.java中看起,在m ... -
自己安装的路径
2011-03-14 22:03 9511,今天在利用nutch和solr集成的环境建立索引时,bin ... -
集成nutch和solr,并加入中文分词的过程
2011-03-04 16:51 9502准备工作 安装nutch 安装solr 加入中文分词 ... -
Setting up Apache Solr in Eclipse(转)
2011-03-02 22:31 1067在eclipse中建立solr工程的时候,遇到的错误快把我 ... -
solr配置相关
2011-02-26 14:57 1004首先去官方网站看了一下solr的tutorial文档,里面给出 ... -
推荐的一些想法
2010-11-02 16:29 980在读写网一篇评论推荐 ... -
少数人的智慧(The Wisdom of the Few) (转)
2010-10-12 20:26 929看 到这么个有吸引力的名字,你不会觉得它是一篇学术论文,但实际 ... -
基于LUCENE实现自己的推荐引擎(转)
2010-10-01 23:37 8691、常用推荐引擎算法问题 1)、相对成熟、完整、现成的开源解 ... -
海量数据分析:Sawzall并行处理(中文版论文)
2010-08-24 16:37 1789Google的工程师为了方便 ... -
Google的十大核心技术
2010-08-20 17:32 798Google的十大核心技术 作 ... -
MapReduce 中文版论文
2010-08-20 16:51 1163MapReduce 中文版论文 作 ...
相关推荐
solr全文检索环境搭建, 我已经把solr环境都准备好了。你只需要根据我在文档中的说明放到你的环境下就可以了。
solr全文检索,用与搭建个人的全文检索功能。
solr的基本搭建,拼音检索,三种分词器(smartcn ,IK,mmseg4j)的安装,停词器的安装
使用Solr为大数据库搭建搜索引擎,内容很好的,不忽悠
Sphinx是一个开源的基于MYSQL的全文检索工具 通过合理的配置 可以提供全文检索服务 本文档介绍了 Sphinx的配置和搭建
项目地址 SpringBoot 搭建博客检索系统 使用步骤 download 本项目 修改 yml 文件中的数据库配置,es 配置。 配置 logstash ,见下文。 启动本项目,在本地 8081 端口访问项目,可以看到有两个按钮,分别是通过 ...
Solr服务器是基于solr搭建的一个服务器,服务器配置全部实现。可用于全局搜索。
solr_architecture,solr的架构图说明,可以很好的理解solr的整体架构。
包涵apache-solr-core-3.5.0.jar和apache-solr-solrj-3.5.0.jar两个文件,搭建solr全文检索环境必须要添加的包
Solr集群搭建:Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用...
Solr它是一种开放源码的、基于 Lucene 的搜索服务器,可以高效的完成全文检索的功能。在本套课程中,我们将全面的讲解Solr,从Solr基础到Solr高级,再到项目实战,基本上涵盖了Solr中所有的知识点。 主讲内容 章节一...
附带学习地址文档,让你快速上手投入使用。 solr的基本搭建,拼音检索,分词器的安装等 https://blog.csdn.net/weixin_36040318/article/details/89066167
下载后会获得名为:solr_core.4.6.0 的zip包,解压后会获得solr-core-4.6.0.jar和 solr-solrj-4.6.0.jar两个文件,搭建solr全文检索环境必须要添加的包
本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试;两个核心配置文件介绍;维护索引;查询索引,和在查询中可以应用的高亮显示、拼写检查、搜索建议、分组统计、拼音检索等功能的使用方法。
1、熟练掌握Lucene框架的使用,实现类似百度、京东商城等应用的全文检索效果; 2、ElasticSearch下载安装(window以及linux下安装) 3、集群环境搭建 4、客户端Kibana安装与使用 5、集群管理插件head安装使用 6、...
对SOLR的环境搭建和增删改查的例子,希望初学者受用
solrcloud环境搭建 windows平台搭建档案 全文检索实现
系统开发环境:Eclipse 开发语言:Java ...说明:一个基于Solr的搜索引擎,由Spring+SpringMVC框架搭建,通过Solr服务器对MySql数据库表进行索引和检索,数据库中数据爬取自于上述三个网站的部分内容,有待优化。