`

Solr初体验

    博客分类:
  • solr
阅读更多

 

Solr 的官方介绍

Solr is the popular, blazing fast open source enterprise search platform from the Apache Lucene project. Its major features include powerful full-text search, hit highlighting, faceted search, dynamic clustering, database integration, and rich document (e.g., Word, PDF) handling. Solr is highly scalable, providing distributed search and index replication, and it powers the search and navigation features of many of the world's largest internet sites.

 

Solr 安装

1 、上 apache 下载 solr 安装文件( http://lucene.apache.org/solr/ ),我做测试时下载的是最新版本的压缩包( apache-solr-1.4.1 )。

2 、解压缩,将 apache-solr-1.4.1\example\webapps 下的 solr.war 放置在 tomcat 容器的 webapps 目录中

3 、设置 Solr 的主位置,可以通过以下三种方式:

A 、设置 java 系统属性  solr.solr.home  (没错,就是  solr.solr.home )。

B 、配置  java:comp/env/solr/home  的一个 JNDI 查找指向  solr  目录。

C 、在包含 solr 目录的目录中启动 servlet 容器。(默认的 Solr 主目录是当前工作目录下的  solr 。)。

我采用的方式是在 tomcat conf\Catalina\localhos 目录下建立 solr.xml 文件,我将 solr home 放在 D 盘,文件内同如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="D:\apache-solr-1.4.1\example\webapps\solr.war" debug="0" crossContext="true" >
	   <Environment name="solr/home" type="java.lang.String" value="D:\solr_home" override="true" />
</Context>

 这样配置不需要将 solr.war 文件放在 tomcat 容器的 webapps 目录中。 Solr home 中的内容为 apache-solr-1.4.1\example\solr 下的内容,其中主要的三个文件夹为: bin conf data data 下就是存放索引的地方。如果一切配置成功,启动 tomcat ,访问 http://localhost:8088/solr/admin

 

( 我的 tomcat 端口号为 8088) ,即可访问到 solr 管理主界面。

 

Solr 重要文件的简单说明(详细信息 tosee solr wiki

solrconfig.xml solr 的基础文件,里面配置了各种 web 请求处理器、请求响应处理器、日志、缓存等。

schema.xml 配置映射了各种数据类型的索引方案。分词器的配置、索引文档中包含的字段也在此配置。

 

 

 

Solr 使用

Solr web 形式的发布,对外提供了添加、修改、删除索引和检索的 web 服务。并且提供多种格式的信息传输,如 xml json cvs 等,默认提供的是 xml 格式。

以下是按照 solr 的默认配置,对 solr 初步体验的过程

<!--[if !supportLists]-->1、  <!--[endif]-->设计索引模型。 索引模型中包含四个不同数据类型的字段: Id(int) time Calendar )、 enabled(boolean) content(String) 。其中 id 是文档的唯一标识。

<!--[if !supportLists]-->2、  <!--[endif]--> schema.xml 中映射索引模型的各个字段。

具体的内同如下:

 

 

<!—field 标签配置了字段的解析类型、是否需要索引、是否需要存储等,详细信息 to see  solr wiki-- >
<field name="id" type="integer" indexed="true" stored="true"/>
<field name="time" type="date" indexed="true" stored="true"/>
<field name="enabled" type="boolean" indexed="true" stored="true"/>
<field name="content" type="text" indexed="true" stored="true"/>

<!- 字段all是一个虚拟的字段,代表所有的字段,在此表示:id,time,enabled,content 
<field name="all" type="text" indexed="true" stored="true" multiValued="true"/>

<!—uniqueKey告诉solr id字段是文档的唯一标识 -->
<uniqueKey>id</uniqueKey>

<!—solrQueryParser 标签表示多条件检索时采用的策略。如:检索条件content:xxx time:xxx solr就会采取content:xxx OR time:xxx 这种形式-->
<solrQueryParser defaultOperator="OR"/>

<!—defaultSearchField标签表示如果没有明确检索那个字段,solr就会检索这个标签配置的字段 -->
<defaultSearchField>all</defaultSearchField>

<!—copyField标签表示将其他字段复制到目标字段,方面检索。如:将id、time、enabled、content 复制到all上面,当不指定明确的检索字段,solr就会检索all字段,其实就是检索id、time、enabled、content -->
<copyField source="id" dest="all"/>
<copyField source="time" dest="all"/>
<copyField source="enabled" dest="all"/>
<copyField source="content" dest="all"/>

 

 

 

<!--[if !supportLists]-->3、  <!--[endif]-->配置中文分词。

我采用的是 IKAnalyzer 中文分词,中文分词器的配置参考 IKAnalyzer 中文分词的使用手册。中文分词器需安装在 solr web

4 、编写客户端程序访问 solr web 服务创建、修改、删除索引和搜索

       Solr 默认提供的 web 服务 api 如下:

       创建、更新、提交、优化索引: http://localhost:8088/solr/update post

       删除索引: http://localhost:8088/solr/update post

       搜索: http://localhost:8088/solr/select get

 

4.1 创建、更新、提交、优化索引(详细的配置信息 tosee Solr wiki

创建、更新索引需要向 solr 服务提供如下的格式化信息

 

<add>
  <doc>
    <field name="id">1</field>
    <field name="time">2010-10-10T11:11:11.222S </field>
    <field name="enabled">true</field>
    <field name="content">solr development</field>
  </doc>
  [<doc> ... </doc>[<doc> ... </doc>]]
</add>

 创建或修改完索引,需要提交,这样 solr 才能够检索到

 

提交索引变化的格式化信息如下:

<commit/>

优化索引的格式化信息如下:

< optimize/>

索引的提交或优化也可以以 url 参数的形式体现。如

http://localhost:8088/solr/update?commit=true

 

4.2 删除索引的格式化信息(详细的配置信息 tosee Solr wiki

 

<delete>
  <id>1</id>
<id>2</id>
  <query>content:solr</query>
</delete>

 

 

 

4.3 搜索

Solr 的查询语法(详细的配置信息 tosee Solr wiki

 

 

参数

描述

示例

q

Solr 中用来搜索的查询。有关该语法的完整描述,分号和已索引且未进行断词的字段(下面会进行解释)的名称来包含排序信息。默认的排序是  score desc ,指按记分降序排序。

q=myField:Java AND otherField:developerWorks; date asc 
此查询搜索指定的两个字段并根据一个日期字段对结果进行排序。

q.op

表示 q 查询语句的 各条件的逻辑操作 AND( ) OR(
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

q.op=AND

start

将初始偏移量指定到结果集中。可用于对结果进行分页。默认值为 0

start=15 
返回从第 15 个结果开始的结果。

rows

返回文档的最大数目。默认值为 10

rows=25

fq

提供一个可选的筛选器查询。查询结果被限制为仅搜索筛选器查询返回的结果。筛选过的查询由 Solr 进行缓存。它们对提高复杂查询的速度非常有用。

任何可以用  q  参数传递的有效查询,排序信息除外。

hl

 hl=true  时,在查询响应中醒目显示片段。默认为 false

hl=true

hl.fl

高亮 field 

hl.fl=id,content

hl.simple.pre

高亮前面的格式

hl.simple.pre=<a>

hl.simple.post

高亮后面的格式

hl.simple.post=</a>

fl

作为逗号分隔的列表指定文档结果中应返回的  Field  集。默认为 “*” ,指所有的字段。 “score” 指还应返回记分。

*,score

sort 

 

排序

sort =id asc

 

 

实例

 

//利用httpclient访问solr服务、服务端返回标准的xml格式信息
//需要较好的展示需要自己解析xml格式信息
String keyword = req.getParameter("q");
if(StringUtils.isNotBlank(keyword)){
	String command = "fl=*,score&start=0&rows=10&hl=true&hl.fl=*&q="+URLEncoder.encode(keyword, "UTF-8");
	responseResult = HttpClientUtils.sendGetCommand(command, "http://localhost:8088/solr/select");
	responseResult = escape(responseResult);
}
 

 

 

 

 

有了上述的基本了解,一个最基础的应用就可以跑起来了。具体代码请看附件源码

 

 

供参考的资料:

Solr wiki 地址(内容非常详细,英语好的可直接阅读):

http://wiki.apache.org/solr/FrontPage

使用 Apache Solr 实现更加灵巧的搜索第 1 部分 : 基本特性和 Solr 模式

http://www.ibm.com/developerworks/cn/java/j-solr1/index.html?ca=drs-

使用 Apache Solr 实现更加灵巧的搜索,第 2 部分 : 用于企业的 Solr

http://www.ibm.com/developerworks/cn/java/j-solr2/index.html?ca=drs-

 

 

 

 

  • src.rar (2.1 MB)
  • 下载次数: 21
0
0
分享到:
评论
1 楼 JavaStudyEye 2010-12-23  
又学到不少东西,感谢楼主

相关推荐

    solr初体验

    Solr初体验:深入理解开源全文搜索引擎 Solr,全称Apache Solr,是一个高度可扩展的、开源的全文搜索引擎平台。它允许开发者通过HTTP接口对大量文本数据进行高效的搜索和分析。Solr由Java编写,是Apache软件基金会...

    Apache Solr(solr-8.11.1.tgz)

    同时,你可以利用Solr的 faceting(分面搜索)、highlighting(高亮显示)、spell checking(拼写检查)等功能来提高用户体验。此外,Solr还支持实时添加和更新文档,以及高效的近实时搜索。 在部署和使用Solr时,...

    solr(solr-9.0.0.tgz)

    Solr,全称为Apache Solr,是Apache软件基金会的一个开源项目,主要用来处理全文搜索和企业级的搜索应用。它基于Java,利用Lucene库...通过深入理解和熟练使用Solr,你可以为你的应用程序提供高效、精准的搜索体验。

    solr-6.2.0源码

    7. 高亮显示:Solr可以高亮显示搜索结果中的关键词,提高用户体验。 三、Solr 6.2.0的改进与新特性 1. 改进的ShardHandler API:增强了对请求的并发处理能力,提高了性能。 2. 引入了新的查询执行模型(Distributed...

    solr4.7服务搭建

    ### Solr 4.7 服务搭建详细指南 #### 一、环境准备 为了搭建 Solr 4.7 服务,我们需要确保以下环境已经准备好: 1. **Java Development Kit (JDK) 1.7**:Solr 需要 Java 运行环境支持,这里我们选择 JDK 1.7 ...

    Apache Solr(solr-8.11.1.zip)

    Apache Solr是一款开源的企业级搜索平台,由Apache软件基金会维护。它是基于Java的,提供了高效、可扩展的全文检索、数据分析和分布式搜索功能。Solr-8.11.1是该软件的一个特定版本,包含了从早期版本到8.11.1的所有...

    solr.war包solr.war包solr.war包solr.war包solr.war包

    solr.warsolr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包...

    solr-7.4.0.zip

    Solr,全称为Apache Solr,是一款开源的企业级全文搜索引擎,由Apache软件基金会开发并维护。它是基于Java的,因此在使用Solr之前,确保你的系统已经...正确配置和使用Solr,可以显著提升数据的检索效率和用户体验。

    solr服务器_solr_

    Solr服务器是Apache Lucene项目的一个子项目,是一款开源的企业级搜索平台,专门用于处理大量文本数据的全文检索、搜索和分析。它基于Java开发,能够处理多种数据源,包括XML、JSON、CSV等,提供了高效、可扩展的...

    solr(solr-9.0.0-src.tgz)源码

    Solr是Apache软件基金会的一个开源项目,它是基于Java的全文搜索服务器,被广泛应用于企业级搜索引擎的构建。源码分析是深入理解一个软件系统工作原理的重要途径,对于Solr这样的复杂系统尤其如此。这里我们将围绕...

    解决solr启动404问题

    Solr是Apache Lucene项目的一个子项目,是一个高性能、基于Java的企业级全文搜索引擎服务器。当你在尝试启动Solr时遇到404错误,这通常意味着Solr服务没有正确地启动或者配置文件设置不正确。404错误表示“未找到”...

    solr安装包下载地址

    Solr,全称为Apache Solr,是一款开源的企业级搜索平台,由Apache软件基金会开发并维护。它是基于Java的,能够处理大量数据并提供...通过深入学习和实践,你可以充分利用Solr的特性,为你的项目带来卓越的搜索体验。

    ikanalyzer-solr8.4.0_solr8_solr_ikanalyzer_中文分词_

    ikanalyzer 是一个专门为Java开发的中文...总之,ikanalyzer-solr8.4.0 是 Solr 8.4.0 版本下用于中文分词的重要工具,通过合理的配置和使用,可以显著提高 Solr 对中文文本的处理能力,从而提升搜索质量和用户体验。

    solr的学习

    ### Solr 学习知识点详解 #### 一、Solr 概述 - **定义**:Solr 是 Apache 下的一个顶级开源项目,采用 Java 开发,它是基于 Lucene 的全文搜索服务器。Solr 可以独立运行在 Jetty、Tomcat 等 Servlet 容器中。 -...

    solr ik分词器

    Solr是中国最流行的开源搜索引擎平台之一,而IK Analyzer是一款针对中文的高性能分词器,尤其在处理现代汉语的复杂情况时表现出色。...通过不断优化配置,你可以进一步提升用户体验,满足各种复杂的中文检索需求。

    ikanalyzer-solr中文分词包兼容solr7.5

    在Solr中集成ikanalyzer,可以提高中文搜索的性能,使得搜索结果更加准确,用户体验得到提升。 在实际应用中,安装ikanalyzer-solr分词包的步骤大致如下: 1. 将`ik-analyzer-solr5-5.x.jar`添加到Solr服务器的`...

    Linux上Solr的启动方式

    使用Solr内置的Jetty服务器启动Solr (1)借助X Shell上传solr的安装包到/usr/local/目录下,使用 tar -zxvf命令进行解压.  (2)使用内置的Jetty来启动Solr服务器只需要在example目录下,执行start.jar程序即可,...

    solr增量更新架包apache-solr-dataimportscheduler.jar

    Apache Solr 是一个开源的全文搜索引擎,广泛应用于各种企业级数据搜索和分析场景。增量更新是Solr的一个关键特性,它允许系统仅处理自上次完整索引以来发生更改的数据,从而提高了性能并降低了资源消耗。"apache-...

    solr-4.4.0.tgz

    Solr 是一个开源的全文搜索引擎,由 Apache 软件基金会开发。版本 4.4.0 是 Solr 的一个重要里程碑,它包含了丰富的特性和改进。这个“solr-4.4.0.tgz”文件是一个针对 Linux 系统的压缩包,用于在服务器上部署 Solr...

Global site tag (gtag.js) - Google Analytics