`
韩悠悠
  • 浏览: 839840 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

solr入门

    博客分类:
  • solr
 
阅读更多

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文件。


Solr 基础

因为 Solr 包装并扩展了 Lucene,所以它们使用很多相同的术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如 Luke)也可以使用 Solr 创建的索引。

在 Solr 和 Lucene 中,使用一个或多个 Document 来构建索引。Document 包括一个或多个 Field。Field 包括名称、内容以及告诉 Solr 如何处理内容的元数据。例如,Field 可以包含字符串、数字、布尔值或者日期,也可以包含您想添加的任何类型。Field 可以使用大量的选项来描述,这些选项告诉 Solr 在索引和搜索期间如何处理内容。我将在本文中稍后详细讨论这些选项。现在,查看一下表 1 中列出的重要属性的子集:


单个 Solr App ------------------低级版本的安装
 

 下载和安装 Tomcat,Windows 用 MSI 安装。用 tcnative.dll 文件安装它,可以安装到 C:\tomcat 目录。1)
 

 检查安装是否正确,http://localhost:8080/
 

 修改 c:\tomcat\conf\server.xml 文件,在 Connector 元素里加 URIEncoding 属性(UTF-8)。
 

 下载和解压 Solr 的zip发布包,例如解压到 c:\temp\solrZip\
 

 建一个目录叫solr,用来运行 web 应用服务器,例如 c:\web\solr\
 

 复制 c:\temp\solrZip\example\solr\ 目录下的内容到 c:\web\solr\
 

 停止 Tomcat 服务
 

 复制 c:\temp\solrZip\dist\ 目录下的 *solr*.war 文件到 c:\tomcat\webapps\
 

 重命名 *solr*.war 为 solr.war
 

 用系统的启动图标配置 Tomcat 带 -Dsolr.solr.home=c:\web\solr Java参数启动。
 

 启动 Tomcat 服务
 

 到 Solr 管理页面检查安装是否成功,http://localhost:8080/solr/admin


--------------------------------------------------------------

 

solr 伸缩性和分布式介绍

分布式解决的问题:
 当搜索执行的时间太长,或者索引太大,此时要考虑使用 solr 的分布式了。solr 分布式中,
将一个大的索引分成几个小的索引(shards,分片),放在不同的机器上。当执行搜索时,将查询划分成多个子查询,
在不同机器的索引库中执行搜索,然后将查询结果合并。这个拆分查询和合并结果的过程对用户是透明了。

索引复制解决的问题:
 •当单机的查询性能不济时,可以考虑复制出多台索引来分别承担压力,如做一个全国性的搜索,可以将索引库复制30来个,
 每个省分一个,每个省请求过来时,
 分别在自己省所分配的索引库中进行搜索
 •将索引的读写分离,也可以很好的提供性能。由一个负责写索引,然后同步到其他索引,其他索引只读,仅提供搜索。

 

Solr 缓存配置
缓存在 Solr 中充当了一个非常重要的角色,Solr 中主要有这三种缓存:
•Filter cache(过滤器缓存),用于保存过滤器(fq 参数)和层面搜索的结果
•Document cache(文档缓存),用于保存 lucene 文档存储的字段
•Query result(查询缓存),用于保存查询的结果
还有第四种缓存,lucene 内部的缓存,不过该缓存外部无法控制到。
通过这 3 种缓存,可以对 solr 的搜索实例进行调优。调整这些缓存,需要根据索引库中文档的数量,每次查询结果的条数等。
在调整参数前,需要事先得到 solr 示例中的以下信息:
•索引中文档的数量
•每秒钟搜索的次数
•过滤器的数量
•一次查询返回最大的文档数量
•不同查询和不同排序的个数
这些数量可以在 solr admin 页面的日志模块找到。假设以上的值分别为:
•索引中文档的数量:1000000
•每秒钟搜索的次数:100
•过滤器的数量:200
•一次查询返回最大的文档数量:100
•不同查询和不同排序的个数:500
然后可以开始修改 solrconfig.xml 中缓存的配置了,第一个是过滤器缓存:

<filterCache class="solr.FastLRUCache" size="200" initialSize="200" autowarmCount="100"/>

 
第二个是查询结果缓存:

<queryResultCache class="solr.FastLRUCache" size="500" initialSize="500" autowarmCount="250"/>

 
第三个是文档缓存:

<documentCache class="solr.FastLRUCache" size="11000" initialSize="11000" />

 
这几个配置是基于以上的几个假设的值进行调优的。

 

 


solr动态字段
正常情况下,需要事先把知道的字段定义在 schema.xml 中,当有不确定的字段时,这时可以使用动态字段。
这里是一个动态字段定义的示例

<dynamicField name="*_s" type="string" indexed="true" stored="true"/>

 
这样,送过来的索引数据中,如果有以 _s 结尾的字段的值都都会被按照上述的索引方式进行索引,如字段名称为title_s,content_s。
在匹配过程,如果动态字段和静态字段都符合,会优先匹配静态字段。另外动态字段的仅支持 * 这一通配符,这个通配符仅能位于开头或结尾。

 

 

 

启用 solr suggest
suggest 是搜索引擎一个方便的功能,对数据的关键字进行预测和建议,减少了用户的输。
幸运的是 solr 也提供了类似的功能,在该功能的基础上,配合 jQuery 或 kissy 的自动完成组件就
可以实现类似上面的功能。
启动该功能的过程大体如下:
suggest 的功能依赖拼写组件,solr_home/data 目录下会有一个 spellchecker 目录,该目录用于存
放 suggest 和 拼写检查的索引库,所以要先配置 spell 功能,
地址 :http://www.solrcn.com/?p=573

分享到:
评论

相关推荐

    solr入门java工程

    在这个"solr入门java工程"中,我们将探讨如何使用Java客户端与华为FusionInsight SolrTest进行交互,以及如何在SolrCloud模式下进行分布式搜索。 首先,让我们了解Solr的基本概念。Solr的核心功能是提供高效的全文...

    Solr入门配置说明

    【Solr入门配置说明】 Solr,全称为Apache Solr,是一个开源的、基于Java的企业级搜索应用服务器。它提供了一种高效、可扩展的全文检索能力,支持多种数据源,如XML、JSON等,通过HTTP接口进行通信,使得开发者能够...

    solr入门教程

    Solr 是一个开源的全文搜索引擎,它提供了高效、可扩展的搜索和分析功能。本教程将引导你完成Solr的基本安装、配置以及数据库索引的建立,特别关注定时增量索引这一重要特性。 首先,从Apache官方网站下载Solr的...

    Solr入门教程-solr学习入门经典教程

    solr学习入门经典教程,赶紧学习吧,从solr的搭建讲起,中文分词器的配置

    Solr入门使用详解.zip

    Solr是中国Apache软件基金会开发的一款开源全文搜索引擎,它提供了分布式、可扩展的搜索和分析功能。本教程将深入探讨Solr的基本概念、安装配置、索引管理、查询操作以及solrJ库的使用,同时也涉及到了IK分词器的...

    solr入门文档

    以下是对 Solr 入门知识的详细说明: **1. 安装环境** 在开始使用 Solr 之前,确保你的系统满足以下条件: - **Java 运行环境 (JRE) 或 Java 开发工具包 (JDK)**:Solr 需要 JDK 1.6 或更高版本才能运行。你可以...

    solr入门指南

    ### Solr入门指南知识点解析 #### 一、概述(Overview) **Solr** 是一个高性能、基于Lucene的全文搜索引擎,被广泛应用于企业级搜索应用之中。本指南旨在通过一个示例模式(schema)以及样本数据来介绍Solr的基本...

    solr学习入门教程

    ### Solr学习入门教程知识点详解 #### 一、Solr概览 Solr是一个开源的企业级搜索服务器,采用Java作为底层开发语言,具备高度的可扩展性和灵活性。它通过标准的HTTP协议和XML格式进行通信,这意味着即使不精通Java...

    solr_开发入门例子

    本文将基于"solr_开发入门例子"这一主题,详细解释Solr的基础知识,包括其核心概念、安装配置、索引创建与查询,以及相关的开发工具。 1. **Solr核心概念** - **索引**: Solr通过建立倒排索引来实现快速全文检索。...

    solr7.4.0入门讲解,实时增量同步等

    solr入门环境搭建,sorl ik分词器分词,solr数据库数据导入,solr同步等技术实现及配置.版本solr7.4.0 + ikanalyzer-solr5 + solr-dataimport-scheduler

    Solr 入门资料

    Solr 是一个开源的全文搜索引擎,基于 Java 平台,由 Apache Software Foundation 维护。它是 Lucene 的扩展,提供了更高级别的企业级搜索功能,如分布式搜索、缓存、多语言支持、近实时搜索等。Solr 适用于构建大型...

    solr中文教程

    Solr 提供了强大的全文检索功能,支持高亮显示搜索结果,具备动态集群能力,可以与多种数据库交互,并处理各种电子文档格式,如 Word 和 PDF。它还支持分布式搜索和索引复制,确保了高可用性和可扩展性。 Solr 的...

    solr入门之搭建具有安全控制和权限管理功能的SolrCloud集群-附件资源

    solr入门之搭建具有安全控制和权限管理功能的SolrCloud集群-附件资源

    lucene简单介绍及solr搭建使用

    3. **启动Solr**:运行Solr提供的启动脚本,如`solr start`,启动Solr服务器。 4. **创建核心(Core)**:Solr中的每个核心代表一个独立的索引,可以通过管理界面或者命令行工具创建新的核心。 5. **导入数据**:...

    Solr开发指南.pdf

    【Solr入门】 - Schema配置:Schema是Solr的核心配置之一,用于定义字段类型和字段,影响索引和搜索行为。 - 安装中文分词器:为了支持中文搜索,需要安装如IK分词器这样的插件。 - 自定义业务系统Field:根据业务...

    solr项目和相关资源.rar

    5. **Solr入门测试项目**:这个项目可能是为了演示如何创建Solr实例、导入数据、执行查询以及展示结果。通过实践,用户可以了解Solr的基本工作流程,例如使用Postman或其他客户端工具向Solr发送请求,或者使用Java ...

Global site tag (gtag.js) - Google Analytics