概念
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。
用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中。
Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
功能
- 先进的全文搜索功能
- XML,JSON和HTTP - 基于开放接口标准
- 高度可扩展和容错
- 同时支持模式和无模式配置
- 分页搜索和过滤
- 支持英语,德语,中国,日本,法国和许多主要语言
- 丰富的文档分析
全文检索 实现
顺序扫描 vs 全文检索
顺序扫描法:对文档依次查找,包含目标字段的文档就记录下来。顺序扫描法在文档数量较少的情况下,查找速度比较快,但是当文档数量很多时,查找速度就会变慢。
全文检索:对文档内容进行分词,对分词后的结果创建索引,然后通过对索引进行搜索的方式叫做全文检索。
基本逻辑
索引创建:将现实世界中所有的结构化和非结构化数据提取信息,创建索引的过程。
搜索索引:就是得到用户的查询请求,搜索创建的索引,然后返回结果的过程。
实现步骤
- 获得一些要索引的原文档(Document)
- 将原文档传给分次组件(Tokenizer)
- 将得到的词元(Token)传给语言处理组件(Linguistic Processor)
- 将得到的词(Term)传给索引组件(Indexer)
索引过程
- 有一系列被索引文件
- 被索引文件经过语法分析和语言处理形成一系列词(Term)
- 经过索引创建形成词典和反向索引表
- 通过索引存储将索引写入硬盘
搜索过程
- 用户输入查询语句
- 对查询语句经过语法分析和语言分析得到一系列词(Term)
- 通过语法分析得到一个查询树
- 通过索引存储将索引读入到内存
- 利用查询树搜索索引,从而得到每个词(Term)的文档链表,对文档链表进行交,差,并得到结果文档
- 将搜索到的结果文档对查询的相关性进行排序
- 返回查询结果给用户
小结
Solr的目标是打造一款企业级的搜索引擎系统。
它是一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜索功能。
参考:
https://blog.csdn.net/xiaoyu411502/article/details/44803859
https://blog.csdn.net/u014209975/article/details/53263642