`

solr in Action 中文2.0 了解Solr

 
阅读更多

这章主要内容有:

            1.下载安装Solr4.7

            2.启动solr服务器例子

            3.排序,分页,结果格式化

            4.探索solritas示例搜索界面

 

当你用新的技术,产生不安很自然。但是你可以放心使用solr,因为它被设计用来便于安装和使用,在敏捷开发下,你可以从基础到复杂逐步配置你的solr配置。例如,solr允许你将一个大索引拆成小碎片,被称为分片,并增加副本来增加你的服务的查询能力。但是你在一定规模之前不用担分区和复制。

 

到了本节的末尾,你就可以将solr运行在你的计算机上,知道怎么运行和停止solr服务器。知道你的web管理员控制台,有个基本的理解对于solr的感念比如solr home,core 和collection

 

叫什么名字?

你也许听说过solrCloud,而且很困惑solr4和solrCloud的区别。从技术上来说,SolrCloud是一个solr4的特性,

让分布式运行和配置更容易,是一个容错集群。

 

同时,solrcloud没有什么在云计算环境中运行Solr比如Amazon EC2,尽管你也可以在云计算环境运行solr。

 我们推测“云”的名字的一部分反应了solrCloud的目标特性是服务的弹性扩展,和高可用性。我们将在第13节深入讲解。

 

让我们开始从apach官网下载solr,并安装到你电脑上

2.1 开始

当你了解solr之前,你得先把它运行到你本地计算机上,这里我们从Apache网站下载solr4.7。安装过后,我们向你展示怎么启动solr服务器例子,并且通过浏览器访问solr管理控制台。在这个过程中,我们假设你执行简单的命令行。solr没有图形安装界面。

2.1.1安装solr

安装solr有点用词不当,你全部要做的就只是下载包,解压包。在做之前,确保你已经安装jdk1.6以上的版本。

如果你没有安装jdk,赶紧去下载一个。

我们将在12章节讲解solr源码

在http://lucene.apache.org/solr 这个网址下载Solr。

 下载好之后,把下载的文件移动到你计算机稳定的文件夹下。在windows,你应该把它放到c:\root 目录,在linux系统,放到\opt\solr\文件夹下。对于windows用户,我们强烈建议,solr所在的目录不要有空格。避免solr在这种个目录C:\Documents and Settings\ 或 C:\Program Files\。你可以选择不同的这,但由于Solr是基于Java的软件,包涵空格的路径或许会有问题。

不需要传统安装过程,Solr在一个单一的文件是独立的,你只需要解压就行了。当你解压这个文件,所有的文件都会放在solr-4.7.0/目录底下。

图2.1  ,solr目录结构

2.1.2启动solr服务器例子

打开命令行,敲入以下命令

cd $SOLR_INSTALL/ex ample

java -jar start.jar

$SOLR_INSTALL/只是一个别名,你安装到哪里就是哪里。

在初始化的时候,你可以观察一下控制台的log信息,你可以看到如下log信息

3504 [main] INFO org.eclipse.jetty.server.AbstractConnector  – Started

SocketConnector@0.0.0.0:8983

发生了什么?

你可能想知道完成了什么。要弄清这个问题,你现在要运行solr4.7。你可以验证solr是否启动正确,访问下面这个地址http://localhost:8983/solr。图2.2是solr控制台的截屏,请花一分钟的时间去熟悉的布局和导航工具

图2.2  ....

在这个场景下,start.jar运行一个java web服务 叫jetty,监听8983端口,solr是运行在jetty上的一个web应用,图2.3 说明在你电脑上正在运行的是什么东西。

图 2.3   从系统的角度展示了Solr的Web应用程序的发布

故障排除

查看默认端口8983是否被另外一个进程占用,其他的没什么好说的

Jetty vs Tomcat

我们推荐一开始学习Solt的时候用jetty,如果你们的组织用Tomcat或者其他java web 程序。你可以发布war包文件.我们推荐你读第12章节去学习如果发布solrWar文件

solr用Jetty启动无需配置,但这不意味着生产环境用Jetty是一个坏的选择。

停止Solr

本地操作,你可以直接Ctrl -c结束进程。

现在我们已经有一个运行着的服务器,现在让我们花一会儿时间去看看solr的配置和它的索引存放地点,理解这个solr例子的配置,有助于你为你的应用配置solr服务器。

2.1.3 理解Solr home

在solr ,核心是一组配置文件,Lucene索引文件和solr的事物日志,一个solr运行可以运行多个核心,回顾第一部分,我们设计一个真正的房产搜索应用,一个房子核心和一个土地上市的核心,索引结构不同所以我们用了两个核心。

简单来说,solr同样使用term集合,在第13节我们讨论solrCloud的时候我们再讨论 core和collection的区别。

solr home是一个目录结构,封装了一个或多个核心。原来核心被配置文件solr.xml配置。但是在solr4.4,内核可以自动发现和不需要被定义在solr.xml。因此,你可以忽略solr.xml文件,它包含高级选项只适用于云模式运行Solr。Solr还提供了一个核心管理API,允许你去创建,更新删除以编程方式.我们将在12节详细讨论这个问题,

现在,最重要的是要理解每个Solr服务器都只有一个solr home目录,并且包涵所有cores,全局的java系统属性 solr.solr.home  设置了本地Solr目录   图 2.4 展示solr home下的目录列表

图2.4 默认的solr  home 目录列表。它只有一个单一的核心叫collection1,配置在solr.xml中,这个collention1目录包涵核心配置文件,lucene索引,一个事物操作日志

 

我们学习更多关于Solr配置文件,名叫 solrconfig.xml在第4章节,同样,schema.xml 是主要的配置文件来管理索引结构,和文本分析,还有查询。在第5章详细讲解schema.xml 。

 这个例子目录包含其他两个solr目录。 example/example-DIH提供一个solr例子来学习 DIH特性。example/multicore/这个目录提供一个多核心的例子。

2.1.4添加索引文档

当你一开始启动Solr,solr里没有任何索引,是一个空服务器,我们将在第5章介绍更多关于建立索引的知识,现在我们先不管那么多,先添加一些索引,添加之后就可以试试查询了。打开命令行:

cd $SOLR_INSTALL/example/exampledocs

java -jar post.jar *.xml

 你可以看到下面一些输出信息

 

 SimplePostTool version 1 .5

Posting files to base url http://localhost:8983/solr/update using contenttype application/xml..

POSTing file gb1 8030-example.xml

POSTing file hd.xml

POSTing file ipod_other.xml

POSTing file ipod_video.xml

POSTing file manufacturers.xml

POSTing file mem.xml

POSTing file money.xml

POSTing file monitor.xml

POSTing file monitor2.xml

POSTing file mp500.xml

POSTing file sd500.xml

POSTing file solr.xml

POSTing file utf8-example.xml

POSTing file vidcard.xml

1 4 files indexed.

COMMITting Solr index changes to http://localhost:8983/solr/update..

 

post.jsr这个文件以post方式发送xml文档给solr.当所有文档都发送完了,post.jar会做一个提交(commit)操作。然后索引就被提交到solr中了。为了确认示例文档是否添加成功,我们到solr管理后台查询页,执行查询所有文档命令:*:*。你得选collention1在下拉框里,图2.5给你展示了查询结果

图2.5

 

2.2  搜索到底是什么东西

现在该看看solr最闪亮的地方,毫无疑问,solr最强力的地方是强大的查询处理。想想这种情况,如果你的搜索不行,谁关心你的服务器是不是分布式的,是不是够快。在这一节,你可以看看solr搜索实战能力,思考一下solr为什么有那么强大的搜索技术。

2.2.1探索Solr的查询形式

 

你已经用solr的查询格式做了一次全查,让我们快速过一遍这个格式的其他特性,图2.6提供了solr的关键查询形式,花几分钟好好读读。

图 2.6

 

在图2.6中,q  fq  sort  start  rows  fl   df  wt  分别有自己的意思

正如我们第一节说的,solr服务器对外提供http接口,当你运行query表格,其实是发了一个http  Get请求给solr.

 

要不要看更多查询例子?

我们将在第7部分详细讨论查询,如果你不想等那么长时间,我建议你看一下solr的内置教程,在这个目录底下  $SOLR_INSTALL/docs/tutorial.ht ml,这个文件里,你可以看到很多示例。

这个设计不是为了最终用户,而是为了你的UI端,我们将在后面详细讲解

 

2.2.2solr返回值是什么

图2.7给你展示了  solr的返回值都是什么东西。

2.2.3排名检索

solr和其他NoSql技术最关键的不同就是,排名检索。排序文件的过程中,最相关的文件列在第一位。

我们来看看排名检索是怎么工作的  在第2.1.4章节。开始的时候,在q输入框输入iPod,在fl输入框输入name,features,score 。并且点击执行,返回三个文件,根据评分排序。仔细观察一下结果。

很明显,ipod在第一个文档里出现了三次, 两次在name值域,一次在features值域。在其他文档里,只出现一次,评分(score)的数值其实没有什么实际意义。不能比较两次查询的Score值

接下来,改变搜索条件为iPod power 你可以看到同样查出来是三个文件,还是和上次一样的顺序。这是因为这三个文档都包含查询条件在他们的值域中,但是前两个的评分更接近,1.521和1.398。这是因为 power出现两次在第二个文档。

现在改变你的查询条件 为  iPod power^2,将  power关键字的权重变为2.简单来说,power关键字比ipod关键字重要两倍。这次,同样的三个文档返回的顺序不一样。

现在你已经对排名检索有所了解了,你可以在第3、7、16章中学到更多排名检索的知识

2.2.4. 分页和排序

我们的示例solr包含32个文档,但是一个真正生产环境的solr包含几百万分文档。你可以想象在一个电子商城,输入ipod会返回上千个结果,为了保证搜索结果的速度,节省移动设备的流量。你不必一下子返回全部结果

分页

解决方案就是分页,取结果的一小部分。分页是solr的第一类概念,每次查询都会有页面大小,和起始位置这两个参数。如果请求中没有指定,solr默认页面大小是10。如果要访问下一页,你的起始位置要增加页面大小这样一个数字,比如,如果你在第一页(start=0),现在想到下一页。你要把起始位置变为10(start=10)。

页面尽可能小到满足你的需求就可以了,因为底层的Lucene索引不会一次优化很多文件。相反,Lucene的查询处理优化最先考虑匹配和评分文件。一旦搜索结果是确定的,Solr必须重构每个文档,这需要读取磁盘。虽然它采用了只能缓存技术,但是比起查询来说,结果文档重构是比较缓慢的,特别对于大文件来说。因此,页面要尽可能小

排序

在 2.2.3节我们说过,结果按相关性得分降序排序。你可以让solr按照你指定的值域排序。在2.2.1节有个例子,按照价格排序。

排序和分页一起来讲,是因为排序确定结果分页位置。如果得分相同怎么办?

即使得分一样,solr也能返回一个确定的顺序。这是因为solr找到所有的匹配结果,然后进行分页和排序偏移。Solr跟踪整套文件,顺便说一句,如果所有文件都是一样分手,那么按索引顺序返回。这是一个基于Lucene的内部文档ID。内部文档id大致等同于索引的顺序。但是你不应该依赖排序的值,因为这根据你的索引变化而变化。

2.2.5扩展搜索功能

solr管理控制台查询,有一排复选框,可以在查询处理中启用先进的功能。如图 2.6,表单包括以下内容:

           1.dismax    最大查询分析器

            2.edismax   扩展最大查询分析器

            3.hl  高亮

            4.facet  分类

            5.spatial  空间查询  比如按照geo 距离排序

            6. spellcheck  拼写检查    

如果你点击这些复选框,你可能不清楚它们是用来做什么的。因为使用这些组件需要额外的知识。在本书的后面我们会介绍这些知识。

现在,通过使用solr管理后台我们可以看到一些搜素特性,看图 2.8

http://localhost:8983/solr/collection1/browse

在图 2.8的上面  Solr提供了三个选择:Simple, Spatial, and Group By

 

2.3 solr  管理员控制台的工具

 

2.4  把例子改造成你需要的

现在你有了示例solr服务器,你想知道怎么改造成你想要的吗?你可以复制一份solr home,然后改吧改吧就行了

2.5. 总结

 

 

分享到:
评论

相关推荐

    solr4.7.2+mmseg2.0+pinyinAnalyzer实现拼音、简拼检索

    总结来说,"solr4.7.2+mmseg2.0+pinyinAnalyzer实现拼音、简拼检索"是一种优化中文搜索体验的技术方案,结合了先进的全文搜索服务器、高效的中文分词工具和拼音分析器,提升了搜索引擎的智能化水平。在实践中,我们...

    Solr In Action中文版 第八章

    《Solr In Action》中文版第八章主要探讨的是Solr中的分类搜索,也称为分类导航或分类浏览。分类是Solr的一个强大特性,它允许用户根据一个或多个分类过滤搜索结果,提供更丰富的探索和分析体验。本章涵盖的内容包括...

    Solr实战-solr in action中文版高清

    Solr in action中文版, 高清版。

    Solr In Action 原版

    《Solr In Action》原版书籍是一本专注于Solr搜索引擎实践操作的教材,其中详细介绍了Solr的安装、配置、管理以及与ZooKeeper和SolrCloud的集成。Solr是基于Lucene构建的一个开源搜索平台,它提供了搜索引擎所需的...

    Solr in action Source Code

    Solr in action 源代码。Solr实战源码。Solr实战源码。Solr实战源码。Solr实战源码

    Solr in Action最新完整版

    Solr in Action is the definitive guide to implementing fast and scalable search using Apache Solr 4. It uses well-documented examples ranging from basic keyword searching to scaling a system for ...

    Solr in action.mobi

    PART 1 MEET SOLR. .................................................................1 1 ■ Introduction to Solr 3 2 ■ Getting to know Solr 26 3 ■ Key Solr concepts 48 4 ■ Configuring Solr 82 5 ■ ...

    Solr In Action(中文版)_高清

    ### Solr In Action:中文版知识点详解 #### 一、Solr的特点与优势 **1.1 可扩展性** - **集群与分布式运行:** Solr通过在集群中的多台服务器之间分布运行来实现其可扩展性。这意味着随着业务需求的增长,可以...

    solr in action

    根据提供的信息,我们可以总结出《Solr in Action》这本书涵盖了Solr搜索引擎的全面介绍与深入应用,适合希望深入了解并熟练掌握Solr技术的读者。以下是对各部分涉及的知识点进行详细解析: ### 一、Solr简介 ####...

    Solr in Action_2014

    Solr in Action by Trey Grainger , Timothy Potter Book Description Publication Date: April 5, 2014 | ISBN-10: 1617291021 | ISBN-13: 978-1617291029 | Edition: 1 Summary Solr in Action is a ...

    solr in action配套代码和数据

    Solr in Action是一本深入探讨Apache Solr的权威书籍,旨在帮助读者理解并掌握这款强大的全文搜索引擎的使用。配套代码和数据集是作者为了辅助读者更好地理解和实践书中的示例而提供的宝贵资源。这些资源包括了书中...

    Solr in action

    **本书《Solr in Action》**由Trey Grainger和Timothy Potter合著,通过一系列实用案例,深入浅出地介绍了Solr的核心特性和应用场景。本书适合已经具备一定基础并对Solr感兴趣的开发者阅读。 #### 二、了解Solr 在...

    Solr In Action 中文版 第六章

    ### Solr In Action 中文版 第六章:深入探索文本分析 #### 一、文本分析的重要性及作用 在本章中,《Solr In Action》深入探讨了文本分析的关键概念及其在Solr中的应用。文本分析是指对文本数据进行处理的过程,...

    Solr In Action 2013

    《Solr In Action 2013》是一本专注于Solr搜索引擎应用与实践的书籍,它详细介绍了如何使用Solr进行企业级搜索应用的开发。Solr是基于Apache Lucene的开源搜索服务器,它能够提供强大的全文搜索功能,多样的查询解析...

    Solr In Action 第七章 中文版

    ### Solr In Action 第七章:执行查询及处理结果 #### 重要概念概览 **Solr In Action 第七章** 主要介绍了如何利用Solr的强大功能执行查询、处理查询结果,并深入探讨了Solr的核心搜索机制。本章的重点在于理解和...

    Solr in Action 英文版完整版

    SOLR IN ACTION完整版。 Whether handling big data, building cloud-based services, or developing multi-tenant web applications, it's vital to have a fast, reliable search solution. Apache Solr is a ...

Global site tag (gtag.js) - Google Analytics