【solr】solr介绍

xiaoxiao2021-02-28  18

什么是Solr

Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。 Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中。

Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

Solr的特性包括

高级的全文搜索功能 专为高通量的网络流量进行的优化 基于开放接口(XML和HTTP)的标准 综合的HTML管理界面 可伸缩性-能够有效地复制到另外一个Solr搜索服务器 使用XML配置达到灵活性和适配性

可扩展的插件体系

什么是Lucene

Lucene是Apache下的一个开源项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。目前已经有很多应用程序的搜索功能是基于 Lucene ,比如Eclipse 帮助系统的搜索功能。Lucene能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索。

Solr和Lucene的关系

Lucene更像是一个SDK。 有完整的API族以及对应的实现。你可以利用这些在自己的应用里实现高级查询(基于倒排索引技术的),Lucene对单机或者桌面应用很实用很方便。但是Lucene,需要开发者自己维护索引文件,在多机环境中备份同步索引文件很是麻烦。于是,就有了Solr。 而Solr是一个有HTTP接口的基于Lucene的查询服务器,封装了很多Lucene细节,自己的应用可以直接利用诸如 .../solr?q=abc 这样的HTTP GET/POST请求去查询,维护修改索引。

给个比方就是,Lucene是给你一堆包,让你自己从底层构建一个数据库。而Solr是一个实现好的数据库程序,安装后就可以直接用了。

Solr原理

原理图                                

Solr服务原理

Solr对外提供标准的http接口来实现对数据的索引的增加、删除、修改、查询。 在Solr中,用户通过向部署在servlet 容器中的Solr Web应用程序发送 HTTP 请求来启动索引和搜索。 Solr接受请求,确定要使用的适当SolrRequestHandler,然后处理请求。通过 HTTP 以同样的方式返回响应。

默认配置返回Solr的标准 XML 响应,也可以配置Solr的备用响应格式。

索引原理

可以向Solr索引servlet传递四个不同的索引请求:   1) add/update允许向Solr添加文档或更新文档。直到提交后才能搜索到这些添加和更新。   2) commit 告诉Solr,应该使上次提交以来所做的所有更改都可以搜索到。   3) optimize 重构 Lucene 的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地运行。优化是一个耗时较多的过程。

  4) delete 可以通过 id 或查询来指定。按 id 删除将删除具有指定 id 的文档;按查询删除将删除查询返回的所有文档。

搜索原理

要实现搜索则只需要调用搜索接口select发送HTTP GET。示例: http://192.168.10.85:18080/solr/select?indent=on&version=2.2&q=solr&start=0&rows=10&fl=*,score&qt=standard&wt=standard

注:多核心时为这个地址http://192.168.10.85:18080/solr/core0/select/

下载

从Solr官方网站(http://lucene.apache.org/solr/ )下载,最新版本为Solr6.5.1 bin:solr的运行脚本 contrib:solr的一些贡献软件/插件,用于增强solr的功能。 dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。 docs:solr的API文档 example:solr工程的例子目录:  example/solr: 该目录是一个包含了默认配置信息的Solr的Core目录。  example/multicore: 该目录包含了在Solr的multicore中设置的多个Core目录。   example/webapps: 该目录中包括一个solr.war,该war可作为solr的运行实例工程。 licenses:solr相关的一些许可信息
转载请注明原文地址: https://www.6miu.com/read-484336.html

最新回复(0)