向日葵Solros 2014-07-10
转载请声明出处,谢谢。翻译也很辛苦
solr学习交流扣扣群340954928
1.2。Solr是什么?
在本节中,我们介绍了Solr搜索应用程序设计的关键组件从地上起来。这将帮助您了解Solr提供特定的功能和他们的动机存在。但是在进入之前的细节Solr是什么,让我们确保你知道Solr不是。
•Solr不是一个网络搜索引擎像谷歌或必应。
•Solr无关与搜索引擎优化(SEO)的网站。
现在想象一下,我们需要设计一个房地产搜索web应用的潜力购房者。这个应用程序的核心用例将寻找待售房屋使用一个web浏览器。图1.1描述了这个虚构的web应用程序的屏幕截图。不要过于关注UI的布局和设计,这只是一个模型给视觉上下文。最重要的是体验,Solr可以支持的类型。
图1.1。一个虚构的搜索应用程序描述的模型截图Solr功能
让我们参观图1.1中的截图说明Solr的一些关键特性。从左上角,工作顺时针,Solr提供了强大的功能支持关键字搜索框。1.1.2节中我们讨论了,提供一个良好的用户体验基本的关键字搜索需要复杂的基础设施,Solr提供的盒子。具体来说,Solr提供拼写检查(建议用户类型)、同义词处理、查询词和文本分析工具来处理查询语言的变化条款,比如买房子或购买一个家。
Solr还提供了一个强大的解决方案,实现地理空间查询。在图1.1中,匹配家庭列表显示在地图上根据他们的距离中心的纬度/经度的虚拟社区。Solr的地理空间支持,您可以通过地理距离排序文件,限制在一个文档特定的地理距离,甚至从任何位置返回每个文档的地理距离。也很重要,地理空间搜索快速和高效的,支持的UI允许用户在地图上放大或缩小和移动。
一旦用户执行一个查询,可以进一步使用Solr的分类结果分类显示特性的支持文档的结果集。方面的一种方式分类的文件在一个结果集,以发现和查询优化。在图1.1中,搜索结果分为特性方面,家庭风格,和清单类型。
现在,我们有一个基本的功能类型的想法我们需要支持我们的真实房地产搜索应用程序,让我们看看我们如何实现这些特性与Solr。来开始,我们需要知道Solr如何匹配清单在索引查询输入的用户,因为这是所有搜索应用程序的基础。
1.2.1。信息检索引擎
Solr是建立在Apache Lucene,一个流行的、基于java的开放源码的信息检索lib。我们可以节省的详细讨论信息检索是第三章。为现在,我们将涉及的关键概念信息检索,从正式定义从一个著名的学术文本在现代搜索概念:
信息检索(IR)发现非结构化的材料(通常是文件),满足一个信息需要从内部大集合(通常存储在电脑上)。
房地产在我们的示例应用程序中,用户的主要需要的是找到一个家购买基于位置,风格,功能,和价格。我们的搜索索引将包含家在美国上市,绝对有资格作为一个“大收集。“简而言之,Solr使用Lucene索引提供核心数据结构文档和执行搜索找到文档。
Lucene是一个基于java库的建立和管理一个反向索引,一个专业数据结构进行匹配查询条件文本文档。图1.2提供了一个Lucene的简化描述反向索引对于我们的示例房地产搜索应用程序。
图1.2。支持信息检索是关键数据结构反向索引。
您将在第3章学习如何一个反向索引。现在,是足够的回顾图1.2了解当一个新文档(#图44)添加到索引和文档是如何使用反向匹配查询方式索引。
你可能会认为一个关系数据库可能返回相同的结果使用一个SQL查询,这是真正的对这个简单的例子。但是一个关键的区别Lucene查询和数据库查询是在Lucene结果排名的关联查询和数据库结果只能按一个或多个表的排序列。换句话说,排名文档的相关性是信息的一个关键方面检索并帮助区分从其他类型的查询。
你也许会感到惊奇,还像谷歌这样的搜索引擎使用一个反向索引搜索网络。事实上,需要建立一个网络级反向索引了MapReduce的发明。
MapReduce编程模型,将大规模的数据处理操作在一个商品服务器集群通过制定算法分成两个阶段:map和reduce。在函数式编程,MapReduce通过谷歌来构建其巨大的反向索引适应电力网络搜索。使用MapReduce,地图阶段产生一个独特的术语和术语文档ID发生。在降低阶段,术语是排序,这样所有术语/ docID对发送到为每一个独特的词相同的减速过程。减速器总结所有词的频率每学期生成反向索引。
Apache Hadoop MapReduce的提供了一个开源实现,而且它的使用Apache Nutch开源项目来构建一个Lucene为网络级反向索引使用Solr搜索。一次彻底的讨论Hadoop和Nutch超出了这个范围
书,但我们鼓励你去调查这些项目如果您需要构建一个网络级搜索索引。
现在,我们知道,Lucene提供了核心基础设施来支持搜索,让我们看看值Solr的Lucene补充道,从你如何定义你的索引使用Solr的灵活模式结构。xml配置文件。
1.2.2。灵活的模式管理
虽然Lucene索引文件和执行查询,提供图书馆缺少的是一种简单的方法来配置你想让你的索引结构。
使用Lucene,您需要编写Java代码来定义字段和如何分析这些字段。Solr添加一个简单的声明方式定义索引的结构以及如何想要的字段代表和分析:一个XML-configuration文档命名schema.xml。在后台,Solr模式使用。xml表示所有可能的领域和必要的数据类型映射到Lucene索引文件。这节省了编程时间,让你的索引结构更容易理解和交流。一个Solr-built指数是100%兼容Lucene索引构建的编程方式。
Solr还增加了不错的构造上的核心Lucene索引功能。具体来说,Solr提供复制和动态字段。复制字段提供一种方法来把生一个或多个字段的文本内容和应用于不同的领域。动态字段允许您相同的字段类型适用于许多不同的领域在schema.xml显式地声明它们。这是用于建模的文档许多领域。我们覆盖模式。xml在章节5和6讲解。
房地产而言,我们的示例应用程序中,你也许会感到惊奇,我们可以使用Solr服务器的例子schema.xml没有做任何修改。这显示了如何灵活Solr模式支持;示例Solr服务器设计支持产品搜索,但是它对我们的房地产搜索很不错的例子。
在这一点上,我们知道,Lucene索引文档提供了一个强大的图书馆,执行查询,和排名结果。Schema.xml,你有一个灵活的方式定义索引结构而不必使用XML-configuration文档程序Lucene API。现在,您需要一种方法来从web访问这些服务。在在下一节中,我们学习如何Solr作为Java web应用程序集成和运行其他技术使用证明标准,如XML、JSON和HTTP。
1.2.3。Java web应用程序
Solr是一个Java web应用程序,运行在任何现代Java Servlet引擎,比如Tomcat或一个完整的J2EE应用程序服务器如JBoss或Oracle。图1.3描述了Solr服务器的主要软件组件。
图1.3。Solr4的主要组件
诚然,图1.3有点压倒性的乍一看。花一些时间来扫描图和了解的术语;不要担心如果你不熟悉的所代表的术语和概念。读完这本书,你应该有一个强大的理解所有的概念提出了如图1.3所示。
我们介绍这一章中提到,Solr设计师认识到Solr是最好的补充技术,在现有架构工作。在事实上,你会很难找到一个环境Solr并不在下降。作为你会看到在第二章,您可以启动示例Solr服务器在几分钟后
你完成下载。
为了实现轻松集成的目标,需要可以从Solr的核心服务许多不同的应用程序和语言。Solr提供了简单的REST-like服务的基础证明标准的XML、JSON和HTTP。作为一个短暂的一边,我们避免了ESTful标签Solr的基于http的API,因为它并不严格遵守所有的休息(Representational State Transfer)原则。例如,在Solr中,您使用HTTP POST删除文档,而不是HTTP delete
REST-like接口是很好的基础,但是通常开发人员喜欢访问客户端库的语言选择抽象一些样板机械的调用web服务并处理响应。这里有好消息最流行的语言,包括PHP、Java、Python。净,Ruby有一个
Solr客户机库。