分享好友 最新动态首页 最新动态分类 切换频道
【转载】开源搜索引擎的比较(一)
2024-12-26 12:03
2.3 查询和排序

利用倒排索引, 查询会变得相当的快捷, 基本上,查询的主要步骤是

1.       词典查找, 查询词会被切分成一组单词,然后在在词典上找索引。 这个过程可以通过对词典排序, 而变得很迅速。

2.       检索是否存在, 如果在词典中定位到词了, 就在找对应的位置列表,看是否存在文档。

3.       结果处理, 为了得到查询词的结果, 需要对找到的结果列表进行再处理。

根据查询词的类型(布尔型的, 近似匹配, 使用通配符)不同, 操作会不一样, 而且意味着需要对结果做额外处理。 例如, 布 尔型查询是最常见的, 是由一组查询词(原子的)通过布尔运算(与,或,非)来进行组合, 以便查到的文档满足这些运算条件。

利用倒排索引可以解决这类查询, 唯一要做的处理只是合并各个查询词的位置列表, 然后按照布尔条件要求来选择满足条件的位置。 另一方面, 单词组 合和近似查找这两个查询类型的处理相对困难, 需要对结果进行复杂的处 理。 单词组合是指一组词汇以特定的模式在文档中出现。 而近似查找则是一种相对弱的关联关系的处理, 单词可能相距一定的距离, 但是依然满足出现的顺序。 对于这些查询, 有必要对结果按照单词的位置进行排列, 然后再对结果位置列表进行模式匹配。

         在查询完索引之后, 需 要对结果按照用户需求进行排序。 这个排序阶段是可选的, 不是必须的。 但是对于网页搜索的场景来说, 这个阶段非常重要。 影 响排序的因素除了查询的结果文档是否匹配查询词外,还有很多其他附加因素。 例如, 在 某些应用下, 文档的大小会暗示文档的重要程度。 在网页搜索场景, 另 一个因素是检索的页面是否“流行”(例如综合考虑网页的入链和出链,页面已经存在的时间等等)。 查询词命中的位置(例如是在标题里面命中呢, 还是正文里面命中, 等。

 

2.4 检索评估

         为了分析一个检索系统的质量, 需要研究由系统返回的结果是否和输入的查询词匹配。这可以如此来实现, 给定一个查询词和一组文档, 文档可以划分为与查询词相关的部分和不相关的部分。然后与由检索系统返回的结果相比较。

         为了形式化表示质量,有几组定义好的质量评价指标可用。本文只关 心准确率和召回率以及两者之间的关系。 给定一个查询词q和文档集合I, 用R来表示相关的文档。 用A来表示搜索引擎检索到的文档集合, 当提交了查询词q之后, Ra表示由系统检索到的,并且相关的文档。 我们定义如下

         召回率:检索系统返回的结果中,与q相关的部分与所有相关的文档的比值。

         Recall = |Ra|/|R|.

(1)1个搜索引擎的数据。 (b)3个搜索引擎的数据。

图2.2:平均准确率/召回率

准确率: 检索系统返回的结果中,与q相关的部分与所有返回的文档的比值。

       Precision = |Ra| / |A|

由于单个质量指标自身可能不足以描述检索系统的质量(例如, 一个检索系统要得到100%的召回率, 只要返回所有的文档集合)。 只有通过组合以上指标才能来分析评价。 例如, 为了从趋势图上分析一 个检索系统的质量。 可以在平面图上描出平均的准确率召回率(如图2.2, 然后再来观察这个系统 的准确率和召回率。平面图在比较评价不同的搜索引擎的时候也是有用的。 例如, 图2.2 (b)观察3个搜索引擎的曲线。 我们发现搜索引擎2在低召回率的时候,准确率比其它的搜索引擎要低, 但是随着召回率的增加, 它的准确率比较平缓, 不像其它引擎退化的那么厉害。

       另外一个常用标准是在截取部分结果后来统计准确率。 例如,分析返回的结果文档的前五个的准确率。 经常叫为前n值准确率(P@n, 之所以采用这个标准, 主要用户一般习惯于只 查看返回结果的前n个, 而不是遍历全部的返回结果。

       正如上文提到的, 要分析准确率和召回 率,就要对全部文档,分析每个文档和查询词的相关性。 并且需要由领域专家来 分析查询词对应的需求含义。但是有时候,这种分析变得难以实现, 因为整个文档集合会因 为过大而不容易分析, 或者用户的查询词所代表的含义并不清楚。 为了避免类似的问题, TREC大会也提供了一组查询词(或者相关主体)和对应的相关的文档(相关性判断)。 利用每个方向所提供的文档集合,和已经定义好的一组主题,以及使用该数据 的意义, 这些就可以在被研究的检索引擎上进行查询, 然后对返回的相关的结果集合进行分析。

 

第3章 搜索引擎

       开源搜索引擎还挺多的。 在本文中,列出了目前主流的搜索引擎, 并且对它们进行了初步的评价, 以便给出一个总体上的 印象。 初步评价用到的标准包括: 开发现状, 项目活跃度, 最后更新时间。 我们比较了29个搜索引擎项目: ASPSeek, BBDBot, Datapark, ebhath, Eureka, ht://Dig, Indri, ISearch, IXE, Lucene, Managing Gigabytes (MG), MG4J, mnoGoSearch, MPS Information Server, Namazu, Nutch, Omega, OmniFind IBM Yahoo! Ed., OpenFTS, PLWeb, SWISH-E, SWISH++, Terrier, WAIS/ freeWAIS, WebGlimpse, XML Query Engine, XMLSearch, Zebra, 和 Zettair。

       基于本文收集到的信息, 可以除去部分项目, 因为它们已经太过时了(最后更新时间要早于2000年)。这些项目不死不活的, 又无法得到更多信息。 因此我们除去了ASPSeek,

BBDBot, ebhath, Eureka, ISearch, MPS Information Server, PLWeb, 和 WAIS/freeWAIS.

       另外, 也有项目由于其它原因 被丢弃了。 例如尽管MG项目是该领域一个相当重要的工作, 但是由于从1999后就再没有更新过。另外Nutch项目也被忽略了,因为它只是Lucene项目的一次调用。 因此我们只分析Lucene项目。 最后, XML Query引擎和Zebra引擎也被忽略了, 因为这两个项目是专注 于结构化数据(XML,而不是半结构数据(HTML)的。

      因此, 剩下来, 本文要覆盖的当前的项目是: Datapark, ht://Dig, Indri, IXE, Lucene, MG4J, mno-GoSearch, Namazu, OmniFind, OpenFTS, Omega, SWISH-E, SWISH++, Terrier, WebGlimpse (Glimpse), XMLSearch, and Zettair。 但是,经过很初步的测试, 就最小的数据集合而言, 本文发现, Datapark, mnoGoSearch, Namazu, OpenFTS, 和 Glimpse的建索引的时间开销是其余项目的建索引时间开销的3到6倍。 因此我们也将它们 排除在外了。

 

3.1 特征

前面提到, 每个搜索引擎都可以依据它们实现的特性,以及在不同场景下的表现来进行划分。 本文通过分析这些搜索引擎的功能以及内在特性, 给定了13个常用特征来描述划分这些搜索引擎。

存储方式: 索引的存储方式, 要么是用数据库存储或者仅采用文件结构存储。

增量索引: 是否支持向已有的索引 追加新的文件集合, 而不用重新生成整个索引。

结果摘要: 是否支持对结果提取摘 要信息。

结果模板: 部分引擎支持模板来提 前结果信息。

停用词表: 建索引的时候,开放停 用词表接口,可以通过增减高频词,来去掉这些高频词。

文件类型: 索引可以解析的文件的 类型。最常用的类型是HTML。

词根替换: 索引和检索是否支持词 根替换。

模糊查找: 是否支持模糊查找, 而不要精确匹配。

结果排序: 根据不同的标准对结果 进行排序。

排序策略: 在提供查询结果的时 候,采用的排序策略。

搜索类型: 是否支持查询词的组合 操作。

编程语言: 建索引实现的编程语 言。 这个信息在对项目进行扩展或者继承的时候会相当有用。

版权信息: 指明允许使用和二次开 发的条件。

在表3.2中列出了每个搜索引擎的特征信息。 为了决定采用哪个搜索引擎, 有必要将所有特征来整体分析, 并且要补充上性能评估 的信息。

 

简单描述一下将要分析的每个搜索引擎, 主要有谁在哪里开发的, 和项目赖以著称的特征。

 

ht://Dig, 提供一组工具可以索引和搜索一个站点。 提供有一个命令行工具和CGI界面来执行搜索。尽管已经有了更新的版本了, 但是根据项目的网站, 3.1.6版是最快的版本了。

IXE Toolkit, 是模块化C++类集合, 有一组工具完成索引和查询。Tiscali(来自意大 利)提供有商业版本, 同时提供了一个非商业版本仅用于科学研究。

Indri, 是基于Lemur的搜索引擎。Lemur是用来研究语言模型和信息检索的工具。这个项目是马萨诸塞大学和CMU的合作项目的产物。

Lucene, 是Apache 软件基金会的一个文本搜索引擎库。 由于它是一个库, 所以很多项目基于这个库, 例如Nutch项目。在目前, 它 捆绑自带的最简单的应用是索引文档集合。

MG4J(管理前兆数据Java语言)是针对大文本集合的一个全文 索引工具。由米兰大学开发。他们提供了通用的字符串和位级别的I/O的优化的类库作为副产物。

Omega, 基于Xapian的应用。Xapian是开源的统计信息检索库, 由C++开 发, 但是被移植到了(Perl Python php, Java, Tcl, C#)等多种语言。

IBM Omnifind Yahoo! Edition, 非常适合内网 搜索的搜索软件。 他结合了基于Lucene索引的内网搜索,和利用Yahoo 实现的外网搜索。

SWISH-E(简单网页索引系统—增强版, 是开源的索引和检索引擎。是Kevin Hughes 开发的SWISH的增强版。

SWISH++是基于SWISH-E的索引和检索工具。尽管经过C++全部重写, 但是 没有实现SWISH-E的全部功能。

Terrier(太字节检索, 由苏格兰的格拉斯哥大学开发的,模块化的平台,能够快速的构架互联网, 内网, 和 桌面的搜索引擎。 它附带了索引,查询和评估标准TREC集合的功能。

XMLSearch, C++开发的索引和检索的一组类。利用文本操作(相等,前缀,后缀,分段)来扩展了查询能力。 Barcino(来自智利)提供了一个商 业版, 同时也有个供学术研究的非商业版。

Zettair(先前称为Lucy, 由皇家墨尔本理工大学的搜索引擎小组开发的文本检索引擎。主要特征是能够处理超大量的文本。

 

史春奇

搜索工程师

中科院计算所毕业

最新文章
4个不错的WordPress文章目录插件
一个用户友好、功能突出的Wordpress文章目录插件,可让您将目录插入到文章、页面和自定义文章类型中。Easy Table of Contents 下载地址:https://wordpress.org/plugins/easy-table-of-contents/为您的文章、页面或自定义文章类型创建SEO友
Docker持续集成(五):分布式时间序列数据库influxDB(服务于cAdvisor监控工具和Grafana仪表盘)
influxDB是一个分布式时间序列数据库。cAdvisor仅仅显示实时信息,但是不存储监视数据。因此,我们需要提供时序数据库用于存储cAdvisor组件所提供的监控信息,以便显示除实时信息之外的时序数据。何谓时间序列数据库
2025年有几家:湛江港澳台联考冲刺(成绩提升快不快)
2025年有几家:湛江港澳台联考冲刺(成绩提升快不快)  参加湛江地区的港澳台联考冲刺是针侨以及港澳台地区学生的高等教育入学考试,为了帮助这些学生更好地准备考试,许多培训机构提供了专门的补习班和辅导服务。以下是一些相关的信息和
2024“年度字词”揭晓!哪个是你的“年度最佳”?
  原标题:2024年度字词揭晓!哪个是你的年度最佳?  用一个字、一个词  描述2024年中国与世界  20日  国家语言资源监测与研究中心与  商务印书馆等单位联合主办的  汉语盘点2024揭晓  智新质生产力变人工智能(AI)  分别
HTML的meta标签详解
(1)、meta标签的组成meta标签共有两个属性,它们分别是http-equiv属性和name属性,不同的属性又有不同的参数值,这些不同的参数值就实现了不同的网页功能。1、name属性 name属性主要用于描述网页,与之对应的属性值为content,content中的
2024中国独角兽排行榜|联合飞机跻身航空航天领域TOP4
近日,在资本圈广受关注且具有影响力的“泽平宏观”发布了《中国独角兽排行榜2024》。这份榜单详述了2024年中国独角兽的规模、估值排名、行业分布、地域分布等。联合飞机不仅与字节跳动、蚂蚁集团、Shein、滴滴等巨头一同上榜,而且以100亿
ai怎么设计台历图形? ai绘制台历图的教程
日程生活中我们经常可以看到台历,想要设计一款台历,该怎么设计呢?下面我们就来看看详细的教程。1、用钢笔工具画出台历的框架轮廓,包括顶端的一排圆孔。2、把台历顶端的金属夹画出来,还有台历正面的文字内容。3、用钢笔工具画出一颗飞
2024年全国抖音巨量本地推广告投放开户
2024年全国抖音巨量本地推广告投放开户在移动互联网的蓬勃发展下,短视频平台的崛起为品牌广告投放开辟了新的天地。作为短视频领域的lingjun者之一,douyin凭借其巨大的用户基数和高效的算法推荐获得了众多广告主的青睐。中晟盈通信息科技
5分钟完成最强超算10^25年工作,谷歌量子芯片重大突破,马斯克、奥特曼齐祝贺
来源 | 机器之心 这是一个重要的里程碑。12 月 10 日凌晨,在 OpenAI 的 Sora 吸引 AI 社区眼球的同时,谷歌宣布了一个重大突破:他们新的量子计算芯片 Willow 可通过规模扩展来降低错误率 —— 其 5 分钟就能完成超级计
相关文章
推荐文章
发表评论
0评