# Solr

# 什么是solr?

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

特点:

Solr是一个高性能,采用Java开发,Solr基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

Lucene是apache软件基金会 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包

# 原理

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

创建 product

创建data-config.xml配置数据库信息,solrconfig.xml添加配置,扫描data-config.xml,managed-schema配置数据库和solr映射

image-20201011104244468

image-20201011104703366

搜索

image-20200404200420640

Analysis 索引

image-20201011111343501

Documents 创建数据,有id修改,没有则添加

image-20201011105103471

删除数据

image-20201011105329160

常用命令

image-20201011110545461

高亮

image-20201011110911104

Query 搜索

区间搜索: price:[100 TO 200]

solr 先删数据库,再删solr

字段为空时,排序在最后

sortMissingLast="true"

不包含  exclusive_group:(* NOT *ZYXP_GOODS*)

包含 exclusive_group:(*ZYXP_GOODS*)