Solr
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
文档通过Http利用XML 加到一个搜索集合中。
查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等
文档通过Http利用XML 加到一个搜索集合中。
Solr可以和Hadoop一起使用。由于Hadoop处理大量数据,Solr
帮助我们从这么大的源中找到所需的信息。不仅限于搜索,Solr也可以用于存储目的。像其他NoSQL数据库一样,它是一种非关系数据存储和处理技术。
Apache Solr特点
Restful APIs − 要与Solr通信,并非一定需要有Java编程技能。相反,您可以使用restful服务与它通信。可使用文件格式(如XML,JSON和.CSV)在Solr中作为输入文档,并以相同的文件格式获取结果。
全文搜索 - Solr提供了全文搜索所需的所有功能,例如令牌,短语,拼写检查,通配符和自动完成。
企业准备 - 根据企业/组织的需要,Solr可以部署在任何类型的系统(大或小),如独立,分布式,云等。
灵活和可扩展 - 通过扩展Java类并相应配置,可以轻松地定制Solr的组件。
NoSQL数据库 - Solr也可以用作大数据量级的NOSQL数据库,可以沿着集群分布搜索任务。
管理界面 - Solr提供了一个易于使用,用户友好,功能强大的用户界面,使用它可以执行所有可能的任务,如管理日志,添加,删除,更新和搜索文档。
高度可扩展 - 在使用Solr与Hadoop时,我们可以通过添加副本来扩展其容量。
以文本为中心并按相关性排序 - Solr主要用于搜索文本文档,结果根据与用户查询的相关性按顺序传送
与Lucene
不同,在使用Apache Solr时,可不需要具有Java编程技能。它提供了一个完整的准备部署服务,以构建一个自动完成的搜索框,Lucene
是不提供的。使用Solr
可以扩展,分配和管理大规模(大数据)应用程序的索引。
Solr安装启动
Windows环境安装配置
下载解压http://lucene.apache.org/solr/downloads.html
验证http://localhost:8983/
安装hadoop下载hadoop
Solr 体系结构
Apache Solr的主要构建块(组件)
· 请求处理程序 - 发送到Apache Solr的请求由这些请求处理程序处理。请求可以是查询请求或索引更新请求。根据这些请示的要求来选择请求处理程序。为了将请求传递给Solr,通常将处理器映射到某个URI端点,并且它将为指定的请求提供服务。
· 搜索组件 - 搜索组件是Apache Solr中提供的搜索类型(功能)。它可能是拼写检查,查询,构面,命中突出显示等。这些搜索组件被注册为搜索处理程序。多个组件可以注册到搜索处理程序。
· 查询解析器 − Apache Solr查询解析器解析传递给Solr的查询,并验证查询的语法是否有错误。解析查询后,将它们转换为Lucene理解的格式。
· 响应写入器 - Apache Solr中的响应写入器是为用户查询生成格式化输出的组件。 Solr支持XML,JSON,CSV等响应格式。对每种类型的响应都有不同的响应写入。
· 分析器/分词器 - Lucene以令牌的形式识别数据。 Apache Solr分析内容,将其分成令牌,并将这些令牌传递给Lucene。 Apache Solr中的分析器检查字段的文本并生成令牌流。分词器将分析器准备的令牌流分解成令牌。
· 更新请求处理器 - 每当向Apache Solr发送更新请求时,请求都通过一组称为更新请求处理器的插件(签名,日志记录,索引)运行。这个处理器负责修改,例如删除字段,添加字段等。
Solr核心(Core)是Lucene索引的运行实例,包含使用它所需的所有Solr配置文件。我们需要创建一个Solr Core来执行索引和分析等操作。Solr应用程序可以包含一个或多个核心。如果需要,Solr应用程序中的两个核心可以相互通信。
核心的增删改查
./Solr create -c solr_sample
./solr delete -c my_core
一般来说,索引是系统地排列文档或(其他实体)。索引使用户能够在文档中快速地查找信息。索引集合,解析和存储文档。索引是为了在查找所需文档时提高搜索查询的速度和性能。
在Apache Solr中,我们可以索引(添加,删除,修改)各种文档格式,如xml,csv,pdf等
创建索引的几个方法(1)使用Solr Web界面。(2)使用任何客户端API(如Java,Python等)(3)使用提交工具。
使用Post命令添加文档用这个命令,可以在Apache Solr中索引各种格式的文件,例如JSON,XML,CSV。
./post -c solr_sample sample.csv
在执行上述命令时,给定文档在指定的核心下会生成索引
使用Post命令添加文档
使用Solr Web界面添加文档
使用Java Client API添加文档
使用XML
文件格式将数据添加到Solr索引。
./post -c my_core sample.xml
使用XML更新文档
./post -c my_core update.xml
删除文档
./post -c my_core delete.xml
除了存储数据,Apache Solr还提供了一些在需要时查询数据的功能
在Apache Solr中的构面或分组(faceting)指的是将搜索结果分类到各种类别中
· 查询faceting - 返回当前搜索结果中与给定查询匹配的文档数。
- 日期faceting - 它返回在特定日期范围内的文档数。
使用字段faceting,我们可以检索所有字词的计数,或者只检索任何给定字段中的顶部字词。
Lucene是简单但强大的基于Java的搜索库。它可以在任何应用程序中用于添加搜索功能。 Lucene是一个可扩展的高性能库,用于索引和搜索几乎任何类型的文本。 Lucene库提供任何搜索应用程序所需的核心操作,例如索引和搜索