solr组件的角色有哪些

2025-03-01 19:30:46
推荐回答(1个)
回答1:

Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。

二、Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于 HTTP 的

管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。

三、Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。

四、通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。

五、此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 创建的索引。可以使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。
solr的优点
通过上面Solr的简介,可知solr的优点包括以下几个方面:

①高级的全文搜索功能;

②专为高通量的网络流量进行的优化;

③基于开放接口(XML和HTTP)的标准;

④综合的HTML管理界面;

⑤可伸缩性-能够有效地复制到另外一个Solr搜索服务器;

⑥使用XML配置达到灵活性和适配性;

⑦可扩展的插件体系。
solr VS Lucene!?
在比较solr和Lucene之前,要知道什么是Lucene,那么首先就来回顾Lucene是个什么东东?

Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta(雅加达) 家族中的一个开源项目。也是目前最为流行的基于Java开源全文检索工具包。目前已经有很多应用程序的搜索功能是基于 Lucene ,比如Eclipse 帮助系统的搜 索功能。Lucene能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索。
那么,solr和它相比,是”输“了?还是“赢”了呢?

其实,Solr与Lucene 并不是竞争对立关系,恰恰相反Solr 依存于Lucene,因为Solr底层的核心技术是使用Lucene 来实现的,Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括 Solr: Solr是Lucene面向企业搜索应用的扩展。
下面是solr和 lucene的架构图: 

这个图很繁琐,看不懂,大家不要灰心,在后面的代码里你就能够了解了这个图所讲的。

不难看出,绿色的就是lucene的模块,而蓝色的就是solr扩展了lucene。从图上可以看出以下几点:

a. 一个真正的拥有动态字段(Dynamic Field)和唯一键(Unique Key)的数据模式(Data Schema) 
b. 对Lucene查询语言的强大扩展! 
c. 支持对结果进行动态的分组和过滤 
d. 高级的,可配置的文本分析 
e. 高度可配置和可扩展的缓存机制 
f. 性能优化 
g. 支持通过XML进行外部配置 
h. 拥有一个管理界面 
i. 可监控的日志 
j. 支持高速增量式更新(Fast incremental Updates)和快照发布(Snapshot Distribution)

说到这,solr的简介就到此结束了,相信大家也对solr有了初步的了解,下面开始介绍一下solr的常用属性有哪些?

solr的使用属性及配置文件
Document 包括一个或多个 Field。Field 包括名称、内容以及告诉 Solr 如何处理内容的元数据。

例如,Field可以包含字符串、数字、布尔值或者日期,也可以包含你想添加的任何类型,只需用在solr的配置文件中进行相应的配置即可。Field可以使用大量的选项来描述,这些

选项告诉 Solr 在索引和搜索期间如何处理内容。

现在,查看以下图片 中列出的重要属性的子集:

在这就先提一下solr的重要文件之一,就是schema.xml的配置文件。

(一) schema.xml

schema.xml这个配置文件可以在你下载solr包的安装解压目录的\solr\example\solr\collection1\conf中找到,它就是solr模式关联的文件。

打开这个配置文件,你会发现有详细的注释。模式组织主要分为三个重要配置:

一、Fieldtype

Fieldtype:就是属性类型的意思,像int,String,Boolean种类型,而在此配置文件中,FieldType就有这种定义属性的功能,看下面的图片: 

图片上有我们熟悉的int,String,boolean,那么,后面的配置,是什么呢?那么我们就来介绍一下后面的参数:

二、Field

Field:是添加到索引文件中出现的属性名称,而声明类型就需要用到上面的type,如图所示:

ps:①field: 固定的字段设置;②dynamicField: 动态的字段设置,用于后期自定义字段,*号通配符.例如: test_i就是int类型的动态字段。

还有一个特殊的字段copyField,一般用于检索时用的字段这样就只对这一个字段进行索引分词就行了copyField的dest字段如果有多个source一定要设置