Solr基本概念

Solr是基于Lucene的开源搜索解决方案,提供HTTP交互、多面浏览、高亮显示等功能。文章介绍了Solr的基本概念,包括搜索构成的四个步骤:构建索引、用户输入、排名和结果展示,并详细阐述了Solr的Schema定义、Field类型和索引构建过程。
摘要由CSDN通过智能技术生成

搜索基本构成

搜索的基本定义,可以表述为以下4个步骤:

1) 构建索引:
Indexing,对文件、网站、数据库的记录进行处理以便可以进行搜索,被索引的文件称为文档。
构建索引之前,需要对文档的内容、结构、类型深入了解,这对于构建索引很有必要,对内容不理解,很难构建出优秀的搜索引擎。索引是使得文档可搜索的过程,一般是将文档各部分内容切分成词条(token),词条经过词干还原、不区分大小写等方式进行规范化后成为词项(term)。这个规范化的过程可以是简单的去掉停用词、大小写处理、词干还原,也可以是复杂的同义词扩展。从文档中构建出词项的过程,在Lucence以及更高层的Solr和ElasticSearch中,通过分析器Analyser来完成。

从文档中抽取出来的词项,通常存储在成为倒排索引的数据结构中,以便搜索引擎可以快速查找到。下图是一个简单的倒排索引示例:

image_1apsssgrj2a4152r18t61nh3u3s9.png-371.1kB

左边的单词就是上面说的词项,每个索引种存储出现该词项的文档ID。例如life这个词出现在文档1,2,3中。除了简单地保存词项在哪个问答中出现以外,往往还会保存词项在文档中的重要程度、在文档中的位置等信息。这使得搜索引擎从简单的布尔模型(是否出现在文档中)进化到基于相关度的排序模型,这是很大的进步。

2)用户输入:
用户通过某种形式输入表达其信息需求,这个需求一般都是不完整的。
用户的输入可以是像Google那样很简洁的一个输入框,也可以提供更高级的选项,例如限制结果的时间范围,来源网站等信息。或者提供一套查询语法供高级的用户使用,主流的搜索引擎的支持这类复杂查询。

用户的输入提交到搜索引擎之后,采取与索引过程类似的手段到输入进行处理,例如去掉停用词,根据输入进行同义词扩展等。在具体的实现中,用户的输入最后都形式化为Query对象,例如Lucence提供了各种类型的Query,例如布尔类型、前缀查询等。

3)排名:
搜索引擎根据查询和索引种文档的匹配度(相关度)进行排名。
用户输入与被索引的文档之间的相关度计算,用于对文档进行排名。Google的PageRank非常出名,该算法根据文档被引用(外链)的次数对文档进行排序。向量空间模型(vector space model,VSM)也是很典型的一种模型。

这种模型将文档中出现的词条作为维度,以向量的形式来表示整个文档。例如整个文档库中有100W的词项,那么文档将被表示为100W维的向量。对于特定的一个文档,如果词汇在文档中出现,则对应维度取值为1,否则为0。最终的向量表示是一个很稀疏的高维矩阵。下图是一个简单的例子:

image_1apsu66bg162c1bhugno1hk0nbcm.png-42.4kB

在这种模型下,用户的输入也被建模为一个文档向量,通过计算文档向量之间的相似度,来决定其排名。文档的相似度通过向量的夹角大小来表示,在数学上通过计算cosine值来得到。下图是一个二维的示意图,q代表用户输入的查询,d1和d2表示两个文档。

image_1apsugm8mvm5s0s1tn719k61eve13.png-47.7kB

Salton等人提出的经典向量空间模型中,词项在文档中的权重由文档本身的参数(局部)和整个文档集的参数(全局&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值