Solr
Apache Lucene项目的开源企业搜索平台。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。 solr 是高度可扩展的,并提供了 分布式 搜索和索引复制。Solr是最流行的企业级搜索引擎,Solr4 还增加了NoSQL支持。
官网链接:
Solr特性
独立的企业级搜索服务,基于http以类-REST API 对外提供服务
- 你可以通过http协议将文档以JSON/XML/ CSV /binary格式发送给Solr进行索引。
- 你通过http GET 请求进行查询,可返回JSON/XML/CSV/binary格式的搜索结果。
近实时的索引能力
- 文档数据提交索引后,立马就可看到
先进的全文检索能力
- 基于Lucene的强大搜索能力,支持任意数据类型的短语、通配、连接、分组等等查询
综合的管理界面
- Slor内建了综合的管理用户界面,让你方便的管理你的solr实例。
通过简单的配置方式来提供高灵活性、适用性。
高伸缩和容错能力
- 基于zookeeper,solr支持分布式、备份、再平衡,来提供高伸缩和容错能力
插件体系架构,易扩展
- Solr发布了许多定义良好的扩展点,这使得插件很容易插入索引和查询时的过程中。
Solr原理
Solr对外提供标准的http接口来实现对数据的索引的增加、删除、修改、查询。在Solr中,用户通过向部署在servlet 容器中的 Solr Web 应用程序发送 HTTP 请求来启动索引和搜索。Solr 接受请求,确定要使用的适当SolrRequestHandler,然后处理请求。通过 HTTP 以同样的方式返回响应。默认配置返回Solr 的标准 XML 响应,也可以配置Solr的备用响应格式。
Solr应用架构
应用需要添加搜索能力,只需三步:
- 在solr中定义一个schema(模式),来告诉solr你要索引的文档document由哪些Field构成。
- 将需要让用户搜索的文档发送给solr
- 在你的应用中公开搜索功能。应用的搜索功能通过调用Solr的搜索API实现。
Solr安装
下载地址:
Solr 7.7.3
Solr 7.7.3 is the last release in the 7.x series.
- Source release: solr-7.7.3-src.tgz [PGP] [SHA512]
- bin ary releases: solr-7.7.3.tgz [PGP] [SHA512] / solr-7.7.3.zip [PGP] [SHA512]
windows:点击solr-7.7.3.zip下载, Linux :solr-7.7.3.tgz
安装准备
Solr的安装很简单,只需解压到安装目录。但在安装之前针对你的使用环境:开发、测试、生产,需要进行一个评估,来决定:是在独立的机器上部署单应用服务;还是需要分布式集群。
特别是在生产环境部署时,需认真评估需要的服务规模。考量因素:
- 文档的数量、结构
- 要存储的字段数量
- 用户数量
- 影响硬件规模的因素
Lucene的严格限制:单个索引中的最大文档数: 约2.14 billion documents (约21.4亿,2,147,483,647 )
实际中不可能在单个索引中达到这个文档数量级还运行良好,在到达这个数量之前早就会用分布式索引集群。如果在部署时,就能估计出将达到如此量级,就应该用solrCloud分布式集群方式安装。
解压后的目录:
bin:启动,停止等命令目录,属性配置脚本(系统级的 Java 、jetty、solr的配置属性)
contrib:Solr的插件存放目录
dist:Solr的jar存放目录
example:示例
server :Solr应用的核心目录
- Solr’s Admin UI (server/solr-webapp)
- Jetty libraries (server/lib)
- Log files (server/logs) and log configurations (server/resources).
- Sample configsets (server/solr/configsets)
本地需要安装Jdk1.8环境,进入Solr的安装目录的bin目录下,cmd,输入solr.cmd start命令。Solr启动成功,浏览器输入:
Solr 管理控制台介绍
DashBoard:仪表盘
Logging:日志查看,设置
Core Admin:内核管理菜单
Java Properties:Java属性浏览
Tread Dump:线程转储
No cores avaliable:包含的core列表
Solr core 介绍
内核:是运行在Solr服务器中的具体唯一命名的、可管理和可配置的索引。一台solr服务器可以托管一个或多个内核。
不同的文档拥有不同的模式(字段构成、索引、存储方式),如商品数据和新闻数据就有不同的字段构成以及不同的字段索引、存储方式。就需要分别用两个内核来索引、存储它们。
内核的典型用途:区分不同模式的文档
创建内核
创建有两种方式,1.通过控制台,2.通过命令
1.web管理控制台加载已存在的内核
需要先添加new_core目录和solrconfig.xml,在Solr的安装目录的server/solr目录下,创建文件new_core,将该目录下的configsets/_default目录中的conf拷贝到新建的new_core下。
返回到刚才的页面,点击Add Core
2.命令行命令创建一个新的内核
-c:内核名称
-d:内核创建依据的配置、模式文件目录
-p:在哪个solr服务实例上创建
-d 选项可选值有两个:
_default 默认值,最少配置;
sample_techproducts_cnofigs 示例的配置
分别用它们创建一个内核:
solr.cmd create_core –c mycore
solr.cmd create_core -c techproducts –d sample_techproducts_configs
内核创建完成,导入写样例数据:
Linux/Mac
solr-7.7.3:$ bin/post -c techproducts example/exampledocs/*
Windows
solr-7.7.3> java -jar -Dc=techproducts -Dauto example\exampledocs\post.jar example\exampledocs\*
导入52个文档测试数据
测试查询
qt:请求处理器
fq:过滤查询。限制名称字段中必须含有 game
sort:排序 按价格从高到低
start,rows:分页:起始序号(0开始),行数
fl:需要返回的字段列表
df:默认搜索字段
wt:响应输出类型
dismax:高级功能设置
后续介绍Solr的其他知识。