由Lucene和深度搜索算法驱动的网站全文搜索引擎外文翻译资料

 2022-05-27 10:05

英语原文共 12 页,剩余内容已隐藏,支付完成后下载完整资料


由Lucene和深度搜索算法驱动的网站全文搜索引擎

摘要:随着web上可用文本数据的快速增长,用户搜索此类信息的需求正在急剧增加。全文搜索引擎和关系数据库作为开发工具各有其独特的优势,但也有重叠的功能。两者都可以提供数据的存储和更新,并且都支持对数据的搜索。完整的文本系统更适合快速搜索大量非结构化文本,以便在任何单词或单词组合的情况下出现。它们提供了丰富的文本搜索功能和复杂的相关度排序工具,根据它们与潜在的模糊搜索的匹配程度来对结果进行排序。另一方面,关系数据库擅长存储和操作结构化数据——特定类型字段的记录(文本、整数、货币等)。他们可以在很少或没有冗余的情况下做到这一点。它们支持灵活地搜索多个记录类型以获取特定的字段值,也支持能够快速和安全地更新单个记录的强大工具。web是一种大型非结构化文档的集合,其规模不断成长,使用RDBMS来搜索这些文档的代价变得越来越昂贵。

本文描述了一个由Lucene驱动的用以搜索任何网站的原型网站搜索引擎的架构、设计和实现。这种方法包括一个用来从预期网站上收集信息的小规模的web爬虫的开发,收集到的信息之后被转换为Lucene文档并存储在索引中。与与使用关系数据库处理查询所需的时间相比,搜索索引所花费的时间非常短。

索引词:全文搜索引擎,关系数据库,信息检索,Lucene,深度优先搜索算法。

Ⅰ.介绍

如果没有信息检索技术的支持,许多在互联网上处理信息的应用程序将会是完全不完善的。如果没有网络搜索引擎的话,我们将如何在万维网上找寻信息? 如果没有垃圾邮件过滤,我们将如何管理我们的电子邮件? 信息检索(IR)是信息系统中的研究领域,涉及搜索文档、文档内的信息以及关于文档的元数据,以及搜索结构化或非结构化存储、关系数据库和万维网[1]。

该系统帮助用户定位他们需要的信息。它没有显式地返回信息或回答问题。相反,它通知可能包含所需信息的文档的存在和位置。一些建议文档希望能够满足用户的信息需求。这些文件被称为相关文件。一个完美的检索系统只会检索相关的文档和没有无关的文档。然而,完美的检索系统并不存在,也不存在,因为搜索语句必然是不完整的,相关性取决于用户的主观意见。在实践中,两个用户可能对信息检索系统提出相同的查询,并以不同的方式判断检索到的文档的相关性:一些用户得到希望得到结果,而另一些用户则不喜欢这些结果[2]。

信息检索系统必须支持三个基本过程:文档内容的表示、用户信息需求的表示和两个表示的比较。表示文档通常被称为索引过程。这个过程是离线的,也就是说,最终信息检索系统的用户没有直接参与。索引的过程影响文档怎样来表示。用户不只是为了好玩而搜索;他们需要信息。表示其信息需求的过程通常被称为查询制定过程。结果的表示就是查询。从广义上说,查询公式可能表示系统和用户之间的完整的交互对话,这不仅导致了一个适合的查询,而且还可能使用户更好地了解他/她的信息需求。对文档表示的查询的比较称为匹配过程。匹配过程通常会生成文档的排序的列表。用户将通过这个文档列表来搜索他们需要的信息。

II.相关研究

根据[10],下面的站点为愿意使用它们的网站开发者提供了免费的搜索功能。

A:Fusionbot

它提供了多层次的搜索,在免费的层面上你可以得到:250个索引了的页面,每个月1个自动索引,每个月1个手动索引,基本报表,站点地图,等等。它甚至支持在SSL域中进行搜索。

B . Freefind

注册这个免费服务很简单。它具有站点地图的附加功能,以及自动生成的与搜索字段一起生成的“新”页面。您可以控制它们对站点的访问频率,因此可以确保将新页面添加到索引中。它还允许您在搜索中添加额外的站点。

C.谷歌自定义搜索引擎。

谷歌定制搜索引擎允许您不仅搜索您自己的站点,还可以创建集合来搜索内部。这使您的读者更感兴趣,因为您可以指定多个站点来包含在搜索结果中。你也可以邀请你的社区为搜索引擎贡献网站。

这种方法的缺点是,您只能局限于搜索公司提供的特性。此外,他们只能将网上存在的网页(内联网和外联网网站无法编目)分类。最后,他们只会定期对网站进行分类,所以你没有任何保证,你的最新页面会立即被添加到搜索数据库中。

III.信息检索模型

许多信息检索技术的发展,如web搜索引擎和垃圾邮件过滤器,需要结合实验和理论。为了跟上越来越多的网页和电子邮件,需要进行实验和严格的实证检验。此外,在实践中需要不断尝试和不断地适应技术,以抵消技术上主观的人的影响,例如电子邮件发送者。然而,如果实验不是以理论为指导,那么工程就很可能会成为试验和错误。信息检索的新问题、新挑战层出不穷。

A:布尔模型

布尔模型是信息检索的第一个模型,也是最受批评的模型。该模型可以通过将查询词看作一组文档的明确定义来进行解释。使用George Boole的数学逻辑的运算符,查询条件和相应的文档集可以组合成新的文档集。Boole定义了三种基本操作符,逻辑的产生叫做AND,逻辑的相加叫做OR,逻辑的差异叫做NOT。

B.向量空间模型。

Gerard Salton和他的同事们提出了一个基于Luhn相似标准的模型,该标准具有更强的理论动机。[6]

他们将索引表示和查询视为嵌入在高维欧几里得空间中的向量,每个术语都被分配到一个单独的维度。相似度测量通常是两个向量d和q的夹角的余弦值。如果向量在多维空间中是正交的,如果角度是0度,则角的余弦值为0。

从数学上根据[7]来说,文档和查询都是矢量。

在文档i中,每个wi,1都是项j的权重,文档向量与查询向量的相似度=它们之间夹角的余弦值

给出的余弦相似度测量公式如下:

sim(d,q)=1 当 d=q时

sim(d,q)=0 当 d 和q无关时

C.模糊集理论模型

到目前为止讨论的IR模型假定索引项是相互独立的。它们都表示文档是索引项的集合,这样就丢失了文档的语义。因此,查询和文档的匹配常常是模糊的。

在模糊集理论中,每个查询项qi定义了一组模糊的文档。集合中的每个文档dj都有一定程度的成员资格(ui,jlt;1)。该术语ui,j定义为:

ci,l是索引项i和索引项l的相关性(查询项也是一个索引项)。这种相关性是计算在一起出现的可能性,而不是一起出现;由下面的公式给出:

该方程实际上计算了查询项qi与文档中所有项的关系的代数和。这个和是作为一个负代数乘积的补充来实现的。首先,该公式可以确保文档中有一个与qi密切相关的索引项(即ci,j asymp;1)。然后mu;也可能asymp;1。隶属度的计算方法是用一个代数和总索引项代替通常的max函数,从而使因子的值mu;i,j平滑过渡。[9]

D.爬取

web爬虫会根据一些定义的策略自动从web检索文档。爬虫程序创建了所有要由搜索引擎处理的文档的副本。爬虫从一个名为seed的url(文档)列表开始。爬虫访问url,识别出即将传出的超链接,并将它们添加到要访问的url(文档)列表中。这样,爬虫就会遍历超链接后的web图。它保存访问的每个文档的副本。根据[9],爬虫使用以下策略:

E.索引

一旦所有数据都存储到存储库(例如数据库、文件系统或internet),就可以开始了。在这个阶段,由于数据存储在所谓的“堆”中,文件和数据不能很好地搜索。搜索所有这些非结构化数据将会非常低效和缓慢。为了使内容更容易访问,数据需要以结构化的格式(称为索引)存储。因此,这就是这个过程被称为索引的原因。在最简单的表单中,索引是被检索到的内容中的所有单词和短语的排序列表。单词和短语将按字母顺序和来源、等级或流行程度来存储。

IV.Lucene库

Lucene是一个高性能信息检索(IR)库,也称为搜索引擎库。Lucene包含强大的api来创建全文索引,并在程序中实现高级和精确的搜索技术。有些人可能会将Lucene与准备使用web search/crawler或文件搜索应用程序的应用程序混淆,但是Lucene并不是这样的应用程序,它是一个框架库。Lucene为您自己提供了实现这些困难技术的框架。Lucene对索引和搜索没有任何歧视,相比于其他的全文索引/搜索含义,它给了你更多的权力;您可以索引任何可以表示为文本的内容。还有一些方法可以让Lucene索引HTML、Office文档、PDF文件等等。

许多产品都使用Lucene来进行搜索;一些知名网站包括维基百科、CNET、Monster.com、梅奥诊所、联邦快递等等。Lucene目前正在Apache软件基金会进行孵化。它的源代码是在subversion存储库,可以在https://svn.apache.org/repos/asf/incubator/lucene/上找到。如果您需要帮助下载源代码,您可以使用免费的TortoiseSVN或RapidSVN。Lucene项目一直欢迎新的贡献者的加入[16]。

V.深度优先搜索

在开始探索另一条道路之前,深度优先搜索沿着一条路径到达它的终点。准确地说,假设搜索从图G的顶点v开始,那么深度优先搜索算法的收益如下。(这里的顶点代表网站上的一个网页)。

算法的主要步骤如下:

1.初始化:将图上的所有顶点标记为未访问。

2.访问v并标记为访问。

3.选择一个顶点,比如w,但未访问,但与v相邻,并以w作为起始点进行深度优先搜索。

4.在到达顶点时,没有未访问的相邻顶点回溯到最近访问过的顶点w,该顶点有一个未访问的邻近顶点表示u,并对一个被视为起始顶点的子树进行深度优先搜索。如果没有顶点未访问的相邻顶点可以找到,终止搜索。

5.在[12]中,这是一个递归过程,如下所示:

Procedure DepthFirstSearch(v:vertex);

Var w: vertex;

Begin

Visit v and mark it visited;

For each vertex w adjacent to v but yet unvisited do DepthFirstSearch(w)

End;

一些约束被添加到算法的实现中,这样在网站的遍历过程中遇到的任何外部链接都会被忽略,以防止爬虫遍历整个web。

使用该算法的爬虫的实现将在下一章节进行解释。

VI. 多数网站的数据库搜索引擎架构

数据库的建立是用于搜索的。数据库驱动的搜索方式对web搜索开发的主要好处之一是高级搜索。搜索1000个数据库记录比1000个HTML页面要快得多。此外,由于内容被分解为数据库中的逻辑数据字段,用户可以搜索非常特定的内容。诸如此类的高级查询,比如一个数据库中有一个名为“John”的文章的所有文章,一个包含“buy”和“sell”的标题,并于1997年发布,它们都是快速且易于管理的数据库方法。这些类型的查询实际上是不可能使用静态站点的。

由数据库索引器索引的结构化文档的集合。

图1. 一个网站上的数据库驱动的信息检索。[4]

VII. 数据库搜索模型的挑战。

  1. 对于每个用户查询,查询都必须重新定义为SQL查询;数据库的整个表必须在其他地方搜索以获取所有相关的文档;这增加了返回给用户的结果所需的时间。
  2. 数据库方法的另一个挑战是,它只考虑数据库中的信息。从研究中发现,网站上的大多数内容都是以文本的形式存在的,这些文本实际上存储在网页上,而不是存储在数据库中。因此,用户的任何搜索都不会通过站点上的页面搜索,而是只通过数据库进行搜索。
  3. 在大量数据的情况下,如果数据库运行在低功耗的机器上(2GB ram, 20 GB的数据),SQL会在结果集返回的结果集和其他查询之间进行内部连接。将相同的查询切换到Lucene将大大提高速度,即随着数据库的大小增长,需要更多的内存。
  4. 关系数据库在处理非结构化数据方面存在不足。它们的设计目的是提供满足用户信息的搜索结果,因为查询是建立在结构域约束条件下的,随着非结构化文本的增加,信息检索系统的发展势头越来越强。这个IR项目的目的是在自由格式文本数据上执行快速全文搜索。
  5. 缺乏对结果的排名机制;当搜索非结构化数据时,排序机制非常重要。大多数用户检查前10或20个结果,忽略其余部分;因此,为了满足用户的信息需求,必须对结果进行排序。对大多数关系数据库的非结构化文本搜索结果的相关度排名与最佳全文搜索系统的相关度不一致。

VIII.提出设计

基于以上分析的数据库系统的不足,提出了该系统的设计方案。该系统利用爬虫从网站上的每个文档收集信息,并将这些信息存储在索引中。索引是一个结构化的系统,用于存储爬虫返回的非结构化数据。下面的部分包含了所设想的系统的设计架构,并解释了架构的每个部分是如何设计的。

图2. 设计方案的架构

  1. 爬虫设计

下面的图3.3显示了基本顺序爬虫的流程。爬虫程序维护一个未访问的url列表,称为边界。列表是用种子url初始化的,种子url可能由用户或其他程序提供。每一个爬行循环都涉及到从边界抓取下一个URL,通过HTTP获取对应于URL的页面,解析检索到的页面以提取URL和应用程序特定的信息,最后将未访问的URL添加到边界。爬行过程可以在一定数量的页面被爬行时终止。如果爬虫准

全文共7114字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[11746],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。