Apache Solr 介绍Solr 是什么?
Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的Java 来实现。服务器通信使用标准的HTTP 和XML,所以如果使用Solr 了解Java 技术会有用却不是必须的要求。
Solr 主要特性有:强大的全文检索功能,高亮显示检索结果,动态集群,数据库接口和电子文档(Word ,PDF 等)的处理。而且Solr 具有高度的可扩展,支持分布搜索和索引的复制。
Lucene 是什么?
Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。
目前已经有很多应用程序的搜索功能是基于 Lucene ,比如 Eclipse 帮助系统的搜索功能。Lucene 能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索。
Solr VS Lucene
Solr 与Lucene 并不是竞争对立关系,恰恰相反Solr 依存于Lucene ,因为Solr 底层的核心技术是使用Apache Lucene 来实现的,简单的说Solr 是Lucene 的服务器化。需要注意的是Solr 并不是简单的对Lucene 进行封装,它所提供的大部分功能都区别于Lucene 。
安装搭建Solr安装 Java 虚拟机
Solr 必须运行在Java1.5 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可,但如果需要扩展功能或编译源码则需要下载JDK 来完成。可以通过下面的地址下载所需JDK 或JRE :
OpenJDK ( http://java.sun.com/j2se/downloads.html )Sun (http://java.sun.com/j2se/downloads.html )IBM (http://www.ibm.com/developerworks/java/jdk/ )Oracle (http://www.oracle.com/technology/products/jrockit/index.html )安装 步骤请参考相应的帮助文档。安装中间件
Solr 可以运行在任何Java 中间件中,下面将以开源Apache Tomcat 为例讲解Solr 的安装、配置与基本使用。本文使用Tomcat5.5 解压版进行演示,可在下面地址下载最新版本http://tomcat.apache.org/download-55.cgi
安装Apache Solr下载最新的Solr
本文发布时Solr1.4 为最新的版本,下文介绍内容均针对该版本,如与Solr 最新版本有出入请以官方网站内容为准。Solr官方网站下载地址:http://www.apache.org/dyn/closer.cgi/lucene/solr/
Solr 程序包 的目录结构
build :在solr 构建过程中放置已编译文件的目录。
client :包含了一些特定语言调用Solr 的API 客户端程序,目前只有Ruby 可供选择,Java 客户端叫SolrJ 在src/solrj 中可以找到。
dist :存放Solr 构建完成的JAR 文件、WAR 文件和Solr 依赖的JAR 文件。
example :是一个安装好的Jetty 中间件,其中包括一些样本数据和Solr 的配置信息。
example/etc :Jetty 的配置文件。
example/multicore :当安装Slor multicore 时,用来放置多个Solr 主目录。
example/solr :默认安装时一个Solr 的主目录。
example/webapps :Solr 的WAR 文件部署在这里。
src :Solr 相关源码。
src/java :Slor 的Java 源码。
src/scripts :一些在大型产品发布时一些有用的Unix bash shell 脚本。
src/solrj :Solr 的Java 客户端。
src/test :Solr 的测试源码和测试文件。
src/webapp :Solr web 管理界面。管理界面的Jsp 文件都放在web/admin/ 下面,可以根据你的需要修改这些文件。
Solr 的源码没有放在同一个目录下,src/java 存放大多数文件,src/common 是服务器端与客户端公用的代码,src/test 放置solr 的测试程序,serlvet 的代码放在src/webapp/src 中。
Solr 主目录结构
一个运行的Solr 服务其主目录包含了Solr 的配置文件和数据(Lucene 的索引文件)
Solr 的主目录展开后为如下结构:
bin :建议将集群复制脚本放在这个目录下。
conf :放置配置文件。
conf/schema.xml :建立索引的schema 包含了字段类型定义和其相关的分析器。
conf/solrconfig.xml :这个是Solr 主要的配置文件。
conf/xslt :包含了很多xslt 文件,这些文件能将Solr 的XML 的查询结果转换为特定的格式,比如:Atom/RSS。
data :放置Lucene 产生的索引数据。
lib :放置可选的JAR 文件比如对Slor 扩展的插件,这些JAR 文件将会在Solr 启动时加载。
如何 设置 主目录
通过Java system property ,属性的名称是:solr.solr.home 。
通过JNDI 将主目录的路径绑定到java:comp/env/solr/home 。
通过修改web.xml 位置在:src/web-app/web/WEB-INF ,
|
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>solr/</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
|
如果Solr 主目录没有指定则默认设置为solr/
发布运行Solr
将apache-solr-1.4.0/dist/apache-solr-1.4.0.war 从安装包中解压到<tomcat home>/webapps 下。WAR 是一个完整的web 应用程序,包括了Solr 的Jar 文件和所有运行Solr 所依赖的Jar 文件,Jsp 和很多的配置文件与资源文件,这里需要注意的是:WAR 文件中不包括Solr 主目录,因此在启动tomcat 之前我们要先指定Solr 的主目录。
将安装程序中的apache-solr-1.4.0/example/solr 文件夹解压到<tomcat homt>/ 下,然后在<tomcat home>/bin/catalina.bat 第一行添加如下内容:
setJAVA_OPTS=%JAVA_OPTS% -Dsolr.solr.home=<tomcat home>/solr
注:Windows 以外操作系统需修改 catalina.sh 文件。
启动tomcat ,apache-solr-1.4.0.war 自动发布为web 应用。
点击链接访问Solr 控制台界面,http://localhost:8080/apache-solr-1.4.0/ ,显示如下界面表示启动成功。
图 1 Solr 欢迎界面
图 2 管理控制台界面
使用Java 接口访问Solr 服务
SolrJ 是Solr 服务器的一个Java 接口,使用该接口再也不同为虑客户端与服务器端交互时格式解析和转换的问题烦恼了,取而代之的是用你熟悉的对象来进行相关的操作,而且随着Solr 的不断升级SolrJ 也会同样提供这些新加入的功能。
SolrJ (Solr1.4 )依赖的Jar 包commons-codec-1.3.jarcommons-fileupload-1.2.1.jarcommons-httpclient-3.1.jarcommons-logging-1.0.4.jarcommons-io-1.4.jargeronimo-stax-api_1.0_spec-1.0.1.jarsolr-solrj-1.4.0.jarwstx-asl-3.2.7.jarstax-api-1.0.1.jarslf4j-api-1.5.5.jarslf4j-simple-1.5.5.jar创建 SolrServer
SolrJ 中有2 种SolrServer 对象,CommonsHttpSolrServer 与EmbeddedSolrServer ,他们都是线程安全的并建议使用单例模式来使用他们,因为动态创建会造成连接泄露。
Create CommonsHttpSolrServer
1 2 |
String url ="http://localhost:8983/solr"; SolrServer server =new CommonsHttpSolrServer( url );
|
Create EmbeddedSolrServer
1 2 3 4 5 |
// solr.solr.home 属性也可以通过 JVM 参数设置System.setProperty("solr.solr.home", "/home/shalinsmangar/work/oss/branch-1.3/example/solr"); CoreContainer.Initializer initializer =new CoreContainer.Initializer(); CoreContainer coreContainer = initializer.initialize(); EmbeddedSolrServer server =new EmbeddedSolrServer(coreContainer, "");
|
添加
|
public SolrServer getSolrServer(){// 对象实例可以重复使用returnnew CommonsHttpSolrServer();}
SolrServer server = getSolrServer();// 清空之前建立的索引数据 server.deleteByQuery("*:*");// 创建一个文档
SolrInputDocument doc1 =new SolrInputDocument();
doc1.addField("id", "id1", 1.0f );
doc1.addField("name", "doc1", 1.0f );
doc1.addField("price", 10);// 创建另外一个文档
SolrInputDocument doc2 =new SolrInputDocument();
doc2.addField("id", "id2", 1.0f );
doc2.addField("name", "doc2", 1.0f );
doc2.addField("price", 20);// 创建文档集合
Collection<SolrInputDocument> docs =new ArrayList<SolrInputDocument>();
docs.add( doc1 );
docs.add( doc2 );// 将文档添加到 Solr 中 server.add( docs );// 提交 server.commit();
|
查询
|
// 得到一个 SolrServer 实例(通过上面介绍的方法创建)
SolrServer server = getSolrServer();// 构造一个查询对象
SolrQuery query =new SolrQuery();
query.setQuery("*:*");
query.addSortField("price", SolrQuery.ORDER.asc);// 查询结果
SolrDocumentList docs = rsp.getResults();
|
中文分词分词产品
目前Lucene 的中文分词主要有:
paoding :Lucene 中文分词“庖丁解牛” Paoding Analysis 。imdict :imdict 智能词典所采用的智能中文分词程序。mmseg4j : 用 Chih-Hao Tsai 的 MMSeg 算法 实现的中文分词器。ik :采用了特有的“正向迭代最细粒度切分算法“,多子处理器分析模式。分词效率
下面是各个分词产品官方提供的数据:
paoding :在PIII 1G 内存个人机器上,1 秒 可准确分词 100 万 汉字。imdict :483.64 ( 字节/ 秒) ,259517( 汉字/ 秒) 。mmseg4j : complex 1200kb/s 左右, simple 1900kb/s 左右。ik :具有 50 万字 / 秒的高速处理能力。自定义词库paoding :支持不限制个数的用户自定义词库,纯文本格式,一行一词,使用后台线程检测词库的更新,自动编译更新过的词库到二进制版本,并加载imdict :暂时不支持用户自定义词库。但 原版 ICTCLAS 支持。支持用户自定义 stop wordsmmseg4j :自带 sogou 词库,支持名为 wordsxxx.dic , utf8 文本格式的用户自定义词库,一行一词。不支持自动检测。 -Dmmseg.dic.pathik : 支持 api 级的用户词库加载,和配置级的词库文件指定,无 BOM 的 UTF-8 编码, \r\n 分割。不支持自动检测。ik 与 solr 集成
以上产品中只有 ik 提供了 Solr ( 1.3 , 1.4 )的分词接口程序,只需修改配置文件即可实现中文分词,配置方法如下;
使用 IKAnalyzer 的配置
1 2 3 4 5 6 7 |
<schemaname="example"version="1.1"> …… <fieldTypename="text"class="solr.TextField"><analyzerclass="org.wltea.analyzer.lucene.IKAnalyzer"/></fieldType> …… </schema>
|
使用 IKTokenizerFactory 的配置
1 2 3 4 5 6 7 8 9 10 |
<fieldTypename="text"class="solr.TextField"><analyzertype="index"><tokenizerclass="org.wltea.analyzer.solr.IKTokenizerFactory"isMaxWordLength="false"/> …… </analyzer><analyzertype="query"><tokenizerclass="org.wltea.analyzer.solr.IKTokenizerFactory"isMaxWordLength="true"/> …… </analyzer></fieldType>
|
分享到:
相关推荐
3. **下载Solr**:访问Solr官网获取最新版本的Solr包,根据教程中的示例,下载的是Solr 1.4版本。 4. **部署Solr**:将Solr的WAR文件放入Tomcat的webapps目录,启动Tomcat后,Solr会自动部署。 Solr安装完成后,会...
5. **docs 目录**:包含了Solr的文档,包括用户手册、API参考和教程,对于学习和调试Solr非常有用。 6. **server/solr 目录**:存储了配置集合的目录,每个集合都有自己的配置文件,如`schema.xml`用于定义字段和...
### Apache Solr 初级教程知识点总结 #### 一、Apache Solr 概述 - **全文检索技术的重要性**:随着互联网的发展,信息量日益膨胀,如何高效地从海量信息中提取有价值的内容变得至关重要。全文检索技术作为一种...
文档的“Getting Started”部分是入门章节,会指导用户完成Solr的安装和初始设置。这个过程包括获取安装包、配置环境变量、启动服务器等步骤。对于新手来说,这个部分尤为重要,因为它能帮助他们快速搭建起运行Solr...
Apache Solr 是一款开源的企业级搜索服务器,由Apache软件基金会维护。它被广泛应用于构建高效、可扩展的全文检索应用。本部分中文翻译主要涵盖了Solr的快速入门、Schema设计和文本分析以及索引与搜索的基本操作。 ...
本教程将引导你完成Solr的基本安装、配置以及数据库索引的建立,特别关注定时增量索引这一重要特性。 首先,从Apache官方网站下载Solr的最新稳定版本,例如5.1.0。解压缩文件到任何你喜欢的目录,比如F盘。接下来,...
### Solr学习入门教程知识点详解 #### 一、Solr概览 Solr是一个开源的企业级搜索服务器,采用Java作为底层开发语言,具备高度的可扩展性和灵活性。它通过标准的HTTP协议和XML格式进行通信,这意味着即使不精通Java...
### Apache Solr搜索架构分析——外部设计篇 #### 一、引言 随着互联网技术的飞速发展,数据量呈爆炸性增长,高效且准确地检索海量数据成为了现代信息技术领域的一项重要挑战。Apache Solr作为一款开源的企业级...
虽然 Solr 可以运行在任何兼容的中间件上,但在本教程中,我们将以开源的 Apache Tomcat 为例。从 Apache 官网下载 Tomcat 的解压版,并按照官方文档的指示进行安装。 安装 Solr 本身,可以从 Apache 官网获取最新...
### Apache Solr Reference Guide 5.5:关键知识点解析 #### 一、Apache Solr简介 - **定义**:Apache Solr是一款开源的企业级搜索平台,基于Java开发,旨在为用户提供快速、高效的数据检索功能。 - **许可证**:...
Apache Solr是一个开源的搜索引擎,它基于Apache Lucene构建,并提供了许多额外的特性,如全文搜索、高亮显示、分面搜索、聚类、数据库查询、搜索建议和高级排序功能。Solr易于安装和配置,并且由于其强大的功能,被...
Solr配置入门教程主要涉及如何将数据从MySQL数据库和XML文件导入到Solr索引中。以下是详细步骤和相关知识点: 1. **下载与解压Solr**:首先需要从官方源获取Apache Solr的最新版本,并将其解压缩到一个合适的文件夹...
接着在“Solr Tutorial”中给出了一些入门示例,包括快速概述,引导新手通过实例学习Solr的基础知识。 在“Solr System Requirements”部分,介绍了运行Solr所必须满足的硬件和软件条件,这是搭建Solr环境前的必要...
【Solr入门配置说明】 Solr,全称为Apache Solr,是一个开源的、基于Java的企业级搜索应用服务器。它提供了一种高效、可扩展的全文检索能力,支持多种数据源,如XML、JSON等,通过HTTP接口进行通信,使得开发者能够...
1. **Solr 教程**:通过一系列实际的操作步骤引导新用户快速上手 Solr,包括安装、配置和运行 Solr 等基本操作。 2. **Solr 快速概览**:对 Solr 的核心功能进行了简明扼要的介绍,为读者提供了 Solr 功能的整体...
OpenShift Apache Solr 4.10.4 快速入门这是一个 OpenShift Quickstart 存储库,可帮助您快速启动和运行 Apache Solr 4.10.4。安装要安装快速入门,请使用以下命令 # Create your application to host your Apache ...
Solr是中国Apache软件基金会开发的一款开源全文搜索引擎,它提供了分布式、可扩展的搜索和分析功能。本教程将深入探讨Solr的基本概念、安装配置、索引管理、查询操作以及solrJ库的使用,同时也涉及到了IK分词器的...
本文档是Apache Solr项目官方参考文档4.10()的中文翻译版,旨在方便大家学习和使用Solr,Solr官方手册能够系统完整的介绍Solr的功能,模块介绍得详细可操作,可以了解设计思路和最佳实践,对Solr有更加准确完整的...