前言 |
在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快,搜索结果按相关度排序,搜索内容格式不固定等,这里都需要使用权门搜索技术实现搜索功能。
Solr简介 |
一、什么是Solr:
1、什么是Solr:
Solr是Apache下一个开源项目,使用java基于Lucene开发的全文搜索服务器。
2、什么是Lucene:
Lucene是一个开放源码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎框架。
3、Solr VS Lucene:
Lucene专注于搜索底层的建设,而Solr专注于企业应用
○ Lucene是一堆jar包,不能单独运行,也不能独立对外体用服务。使用Lucene开发站内搜索的话,程序员编写的代码量会比较大,而且需要考虑搜索和索引流程的性能。
○ Solr对Lucene进行了扩展,提供搜索和索引服务,提供了比Lucene更为丰富的查询语言。程序员只需编写少量的代码,快速的搭建出来站内搜索功能。而且性能方面不需要程序员去考虑,solr对它已经进行了处理。
二、Solr特性
1. 易于加入到Web应用程序中
2. 支持通过java和HTTP等方式实现solr的操作
3. 支持返回XML、JSON、csv等多种格式数据返回
4. 附带了一个基于HTTP的管理界面
5. 支持复制到另外一个Solr搜索服务器
6. 新功能能能够以查件的形式方便的添加到Solr服务中
7. 支持文件、csv、xml、json、数据库等多种数据导入方式
三、Solr核心组成
- SolrHome是Solr运行的主目录,该目录中可以包括多个SolrCore目录。
○ 每个SolrCore互相独立,而且可以单独对外提供搜索和索引服务。
○ Solr实例就是一个SolrCore目录,包含了运行Solr实例所有的配置文件和数据文件
- 实例
○Solr中的实例类似于关系数据库中的表结构,核心配置文件schema.xml
○schema.xml文件中包含三部分:字段(Field)、字段类型(FieldType)、唯一键(uniqueKey)
四、索引介绍
1、solr反向索引:
- Solr/Lucene采用的是一种反向索引,即从关键字到文档的映射过程,保存这种映射这种信息的索引称为反向索引
- 左边保存的是一系列字符串,称为词(Term)
- 每个字符串都指向包含此字符串的文档链表
2、solr索引组件
分词组件
○ 将文档分成一个一个单独的单词 ○ 去除标点符号 ○ 去除停词
语言处理组件
○ 变为小写 ○ 将点此缩减为词根形式,如“cars”到 “car”等 ○ 将单词转变为次更形式,如“drove”到“drive”等 ○ 语言处理组件处理得到的结果称为词(Term)
索引组件(Indexer)
○ 利用得到的词(Term)创建一个字典 ○ 对字段进行排序 ○ 合并相同的词和词出现的文档
总结 |
Solr的目标是打造一款企业级的搜索引擎系统,它是一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建歧义的搜索引擎,通过Slor也可以高效的完成站内搜索的功能。