全文检索原理

合集下载

全文检索方案

全文检索方案

全文检索方案1. 简介全文检索(Full-Text Search)是一种用于快速搜索大量文本数据的技术。

它能够根据用户提供的关键词,从文本数据中匹配相关的内容。

全文检索方案被广泛应用于各种领域,如搜索引擎、电子邮件系统、社交媒体平台等。

本文将介绍全文检索的基本原理、常见的全文检索方案以及如何选择合适的方案来满足不同的需求。

2. 全文检索原理全文检索的原理主要包括以下几个步骤:2.1 索引建立在进行全文检索之前,需要先将文本数据进行索引建立。

索引是一种特殊的数据结构,用于快速定位文档中包含特定关键词的位置。

在索引建立过程中,需要对文本数据进行分词处理,将文本拆分成一个个独立的单词,并记录每个单词在文档中的位置信息。

2.2 搜索查询当用户输入关键词进行搜索时,系统会将关键词进行分词处理,并根据索引快速定位匹配的文档。

搜索查询的结果通常包括匹配的文档及对应的相关性得分。

2.3 相关性排序在搜索查询的结果中,通常需要根据相关性进行排序,以便将最相关的文档排在前面。

相关性排序的算法通常基于词频、文档长度、文档位置等因素进行计算。

2.4 结果展示最后,系统会根据排序结果将匹配的文档展示给用户。

展示方式通常包括摘要、高亮显示匹配的关键词等。

3. 常见的全文检索方案目前,市面上有多种成熟的全文检索方案可供选择。

下面介绍几种常见的方案:3.1 ElasticsearchElasticsearch是一个高性能的分布式全文搜索引擎,基于Lucene开发。

它支持实时数据索引与搜索,并具有强大的搜索、聚合和分析能力。

Elasticsearch易于使用,并提供了丰富的API,可以与各种编程语言进行集成。

3.2 Apache SolrSolr是基于Apache Lucene的开源搜索平台。

它提供了强大的全文检索功能,并支持分布式搜索、自动索引、高亮显示等特性。

Solr也提供了RESTful API,方便与其他应用集成。

3.3 SphinxSphinx是一种开源的全文搜索引擎,专注于高性能和低内存消耗。

全文检索原理

全文检索原理

全文检索原理
全文检索是一种基于文本内容进行搜索的技术,其原理是通过对文档中的所有文字进行索引,以建立一个能够快速查找文档的数据结构。

全文检索不仅仅是简单的关键词匹配,而是通过对文档内容进行分词和建立索引来实现高效的检索。

首先,全文检索系统需要对文档进行分词,将文本内容按照一定的规则进行切分,得到一个个单独的词语(或称为词项)。

接下来,对于每个词语,系统会建立一个倒排索引。

倒排索引是一种将词语与包含该词语的文档进行映射的数据结构,可以理解为一个词语到文档的映射表。

在搜索时,用户输入一个查询关键词,系统会将该关键词进行分词,并在倒排索引中查找包含该关键词的文档。

通过倒排索引,系统可以快速定位到包含关键词的文档,并返回给用户。

同时,全文检索系统还可以根据一定的算法对搜索结果进行排名,以提供更加精准的搜索结果。

常用的排名算法包括TF-IDF(词频-逆文档频率)和BM25(BM25评分算法)等。

总结来说,全文检索通过对文档内容进行分词和建立倒排索引的方式,实现了对文本内容的快速搜索和定位。

它已经被广泛应用于搜索引擎、信息检索系统、电商平台等各种领域。

全文检索原理

全文检索原理

全⽂检索原理在介绍全⽂检索前,先简单说下全⽂数据搜索的两种⽅式: 顺序扫描法(Serial Scanning):所谓顺序扫描,⽐如要找内容包含某⼀个字符串的⽂件,就是⼀个⽂档⼀个⽂档的看,对于每⼀个⽂档,从头看到尾,如果此⽂档包含此字符串,则此⽂档为我们要找的⽂件,接着看下⼀个⽂件,直到扫描完所有的⽂件。

如利⽤windows的搜索也可以搜索⽂件内容,只是相当的慢。

如果你有⼀个80G硬盘,如果想在上⾯找到⼀个内容包含某字符串的⽂件,不花他⼏个⼩时,怕是做不到。

Linux下的grep命令也是这⼀种⽅式。

⼤家可能觉得这种⽅法⽐较原始,但对于⼩数据量的⽂件,这种⽅法还是最直接,最⽅便的。

但是对于⼤量的⽂件,这种⽅法就很慢了。

全⽂检索(Full-text Search) :对全⽂数据中的⼀部分信息提取出来,重新组织,使其变得有⼀定结构,然后对此有⼀定结构的数据进⾏搜索,从⽽达到搜索相对较快的⽬的。

这部分从⾮结构化数据中提取出的然后重新组织的信息,我们称之索引。

这种先建⽴索引,再对索引进⾏搜索的过程就叫全⽂检索(Full-text Search)。

下⾯这幅图描述了全⽂检索的⼀般过程:全⽂检索⼤体分两个过程,索引创建(Indexing)和搜索索引(Search)。

索引创建:将现实世界中所有的结构化和⾮结构化数据提取信息,创建索引的过程。

搜索索引:就是得到⽤户的查询请求,搜索创建的索引,然后返回结果的过程。

于是全⽂检索就存在三个重要问题:1. 索引结构?(Index)2. 如何创建索引?(Indexing)3. 如何对索引进⾏搜索?(Search)下⾯我们顺序对每个问题进⾏研究。

1.索引⾥⾯究竟存些什么索引⾥⾯究竟需要存些什么呢?⾸先我们来看为什么顺序扫描的速度慢:其实是由于我们想要搜索的信息和⾮结构化数据中所存储的信息不⼀致造成的。

⾮结构化数据中所存储的信息是每个⽂件包含哪些字符串,也即已知⽂件,欲求字符串相对容易,也即是从⽂件到字符串的映射。

全文检索技术在知识库管理中的应用研究

全文检索技术在知识库管理中的应用研究

全文检索技术在知识库管理中的应用研究近年来,随着电子化和数字化的进一步发展,知识库管理系统已经逐渐替代了传统的人工管理方式成为企业知识管理的重要工具。

而在知识库管理中,全文检索技术的应用已经成为了不可或缺的一环。

一、全文检索技术的基本原理全文检索技术是一种将文本数据中的所有单词逐个进行索引,实现对文本内容快速检索的技术。

其基本原理是将文本数据中的单词逐一进行分词、索引、存储,并建立起索引和文档之间的对应关系。

而在用户检索时,则是通过查询关键字在索引中的出现位置,快速定位到匹配的文档。

二、全文检索技术在知识库管理中的应用1、知识库内容检索在知识库管理中,全文检索技术广泛应用于企业内部文档的检索。

企业内部文档非常庞杂,格式多样、内容丰富,且数量巨大,如何快速高效地检索是企业知识管理中最需要解决的难题。

而全文检索技术的应用,则能够将检索速度提升几十倍以上,并减少检索错误率。

2、知识库内容推荐除了在内容检索方面的应用,全文检索技术还可以应用于知识库内容的推荐和相似度计算。

如某个用户频繁查看了某个特定主题的知识,系统可以通过全文检索技术筛选出相似内容,并向该用户进行推荐,从而提高了知识库的利用率。

3、知识库内容分类对于大型企业服务系统,其知识库内容数量之大无法想象,因此对知识库内容进行分类非常必要。

全文检索技术可以通过分词、索引等技术,使得不同主题的文档能够被快速过滤出来,从而大大提升了知识库切换速度和用户体验。

4、知识库内容更新随着维护和更新内容的不断增加,知识库管理中的新内容较多,需要快速过滤和提取出有效内容并进行关键词匹配和索引。

全文检索技术则能够快速定位并检索到所需内容,从而实现知识库内容的快速更新和发布。

三、全文检索技术未来发展趋势随着机器学习、人工智能等技术的发展,全文检索技术也在不断地演进和优化,并且针对不同的业务需求进行了不断优化。

未来,全文检索技术将继续朝着更精准、更高效的方向进化。

1、深度学习技术与全文检索的结合通过深度学习技术,全文检索技术能够学习用户的检索模式、喜好和搜索习惯,并不断优化索引和关键词匹配,实现更精准的搜索结果推荐。

es全文检索原理

es全文检索原理

es全文检索原理ES全文检索原理ES(Elasticsearch)是一个开源的分布式搜索和分析引擎,基于Lucene构建。

它提供了强大的全文检索功能,可以快速地从大规模数据集中检索出符合条件的文档。

本文将介绍ES全文检索的原理及其相关概念。

一、倒排索引ES的全文检索是基于倒排索引(Inverted Index)的。

倒排索引是一种数据结构,它将文档中的每个词都映射到包含该词的文档列表中。

在传统的正排索引中,我们通常是通过文档ID来查找对应的词语。

而在倒排索引中,我们可以通过词语来查找对应的文档ID。

倒排索引的结构可以加快搜索速度,特别适用于全文搜索。

二、分词器在进行全文检索之前,需要将待检索的文本进行分词。

分词是将一段连续的文本切分成一个个独立的词语的过程。

ES提供了多种分词器,如标准分词器、中文分词器等。

不同的分词器对于不同的语言和需求有不同的适用性。

分词器的选择对于搜索结果的准确性和性能有着重要的影响。

三、倒排索引的构建过程倒排索引的构建过程包括以下几个步骤:1. 文本分词:将待索引的文本使用合适的分词器进行分词,得到词语列表。

2. 词语映射:将每个词语与对应的文档ID进行映射。

3. 倒排列表构建:根据每个词语的映射关系,构建倒排列表。

倒排列表中包含了包含该词语的文档ID列表。

4. 索引合并:将所有的倒排列表合并成一个完整的倒排索引。

四、查询过程ES的查询过程可以分为两个阶段:查询解析和倒排索引匹配。

1. 查询解析:将用户输入的查询字符串进行解析,生成查询的内部表示结构。

解析过程中会考虑到词语的权重、逻辑运算符等因素。

2. 倒排索引匹配:根据查询的内部表示结构,从倒排索引中找到匹配的文档ID列表。

ES使用BM25算法来计算文档与查询的相关性得分,根据得分进行排序。

五、相关概念1. 文档(Document):ES中的基本数据单元,可以是一个JSON对象。

2. 索引(Index):包含多个文档的容器,类似于关系数据库中的表。

数据库管理中的全文检索与实时推荐

数据库管理中的全文检索与实时推荐

数据库管理中的全文检索与实时推荐随着互联网和大数据的快速发展,数据库管理已经成为了许多企业不可或缺的一部分。

作为数据库管理的重要功能之一,全文检索和实时推荐技术为用户提供了更好的搜索体验和个性化推荐服务。

本文将深入探讨数据库管理中的全文检索和实时推荐的原理和应用。

一、全文检索全文检索是指通过对于文本内的各个字段进行分词索引,根据关键词匹配来查找相关的文档。

与传统数据库的模糊查询不同,全文检索可以更准确地找到匹配文档,大大提高了查询的效率。

在数据库管理中,全文检索技术被广泛应用于搜索引擎、电子商务、在线教育等领域。

全文检索的核心原理是倒排索引。

倒排索引是将词汇表中的每个词与包含该词的文档相关联,然后通过对这些文档的排列来加速搜索。

对于每个词,我们可以得到一个包含该词的文档列表,通过排列这些列表,可以很快找到匹配的文档。

为了实现全文检索,我们需要进行以下几个步骤:1. 分词:将文本进行分词,将其拆分成一个个词语。

2. 建立倒排索引:对于每个词语,将其与包含该词语的文档相关联,建立倒排索引。

3. 查询匹配:根据用户的查询关键词,在倒排索引中找到相关的文档。

4. 结果展示:根据匹配程度,将相关文档进行排序,并返回给用户。

二、实时推荐实时推荐是指根据用户的偏好和行为即时推荐相关的内容或产品。

在数据库管理中,实时推荐被广泛应用于电商平台、社交媒体等领域,可以帮助用户快速找到感兴趣的产品或内容,提高购物体验和用户黏性。

实时推荐的实现依赖于用户的历史数据和实时行为数据。

通过对这些数据进行分析和挖掘,系统可以预测用户的喜好和需求,然后根据算法模型进行个性化推荐。

实时推荐的核心原理是协同过滤和内容过滤。

协同过滤是根据用户的行为进行推荐,例如根据用户之前购买的商品来推荐相关的产品。

内容过滤则是根据物品的属性和用户的偏好进行推荐,例如根据用户喜好的品牌来推荐相关的产品。

为了实现实时推荐,我们需要进行以下几个步骤:1. 数据收集:收集用户的历史数据和实时行为数据。

全文检索引擎的原理与优化研究

全文检索引擎的原理与优化研究

全文检索引擎的原理与优化研究随着互联网的发展,信息量日益爆炸性增长,如果没有一个合适的检索引擎,我们的信息获取将变得更加困难。

因此,如何使用最简单、最快捷的方式获取所需信息,成为了人们学习、工作或生活中的一个重要问题。

全文检索引擎便应运而生,它可以帮助我们更加方便地找到所需信息。

1. 全文检索引擎的原理全文检索引擎是一种基于文本内容的实时搜索技术,它是通过对文本内容建立索引,将其保存在搜索引擎的索引库中,当用户输入关键字进行搜索时,搜索引擎通过检索进入索引库中寻找匹配关键字的文本,并将这些文本返回给用户。

全文检索引擎主要基于以下两个原理进行搜索:1.1 分词技术分词是将一段自然语言文本按照一定的规则进行切分,将切分后的词语作为检索词进行搜索。

比如对于“全文检索引擎的原理与优化研究”这段文字进行分词处理,分词后的结果为:“全文”、“检索”、“引擎”、“的”、“原理”、“与”、“优化”、“研究”。

分词技术是全文检索引擎实现精确搜索的核心,它的实现需要依赖于底层的自然语言处理技术。

1.2 倒排索引技术倒排索引是指通过分析文档的内容生成一个索引表,将所有关键词按照字典排序,然后记录每个关键词出现的文档位置和出现频率,存储在一个大的数据结构中。

例如,在全文检索引擎建立索引时,将所有出现过的词汇记录下来,每个词汇对应一个文档集合,存储它所出现的文件名称和文件位置。

当用户输入关键字时,按照倒排索引表查询关键词出现过的文档集合,再进行相关度排序,将最相关的文档返回给用户。

2. 全文检索引擎的优化研究全文检索引擎的优化研究主要从以下几个方面进行:2.1 分词优化分词技术的准确性和效率对全文检索引擎的性能起着决定性的作用。

因此,如何优化分词效率是一个重要问题。

目前,分词技术的优化主要集中在两个方面:一是词典优化,可以采用更加合理的词典,缩小搜索引擎集合;二是使用更加高效的分词算法,如基于规则的分词算法、基于统计的分词算法和基于机器学习的分词算法。

ocr全文检索逻辑

ocr全文检索逻辑

OCR全文检索逻辑一、引言随着数字化时代的到来,越来越多的文档被电子化保存,其中包括纸质文档的扫描件。

在这些电子文档中搜索特定信息变得越来越重要。

OCR(Optical Character Recognition)技术的出现为文本提取和全文检索提供了有效的解决方案。

本文将探讨OCR全文检索的逻辑和相关技术。

二、OCR全文检索的定义OCR全文检索是一种基于OCR技术的文本检索方法,旨在从电子化或数字化的文档中提取和匹配特定的关键词、短语或句子。

它不仅可以检索可编辑的文本,也可以检索图像或扫描文件中的文本。

OCR全文检索可以帮助用户快速定位到需要的信息,提高工作效率。

三、OCR全文检索的工作原理1.文字识别:OCR全文检索首先要进行文字识别,将图像或扫描文件中的文本提取出来。

这一步骤需要用到OCR技术,将图像转换为可编辑的文本。

2.文本处理:提取到的文本需要进行清洗和处理,去除冗余信息,只保留有意义的内容。

这个过程可能包括文本去噪、分词、词干化等操作。

3.索引建立:为了能够快速检索文本,需要将处理后的文本建立索引。

索引建立是通过将文本划分为不同的单词或短语,并为每个单词或短语建立索引,以便能够根据关键词或短语进行快速搜索。

4.检索匹配:当用户输入关键词或短语时,系统会根据建立的索引进行匹配,并返回与之相关的文档或文本片段。

四、OCR全文检索的应用场景1.文档管理:OCR全文检索可以用于电子化文档的管理。

用户可以根据文件名、关键词或内容在海量文档中快速检索到所需的文档。

2.法律和金融领域:在法律和金融领域,有大量的文档需要整理和检索。

OCR全文检索可以帮助从庞大的数据中快速找到所需的法律条款、案例或金融报表等信息。

3.历史研究:研究人员在历史研究中常常需要查阅大量的历史文献和档案。

OCR全文检索可以大大提高他们的工作效率,帮助他们快速找到所需的信息。

4.教育研究:教育工作者和研究人员可以利用OCR全文检索技术对大量的教育文献进行检索和分析,以支持他们的教学和研究工作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

全⽂文检索我们⽣生活中的数据总体分为两种:结构化数据和⾮非结构化数据。

•结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。

•⾮非结构化数据:指不定长或⽆无固定格式的数据,如邮件,word⽂文档等。

当然有的地⽅方还会提到第三种,半结构化数据,如XML,HTML等,当根据需要可按结构化数据来处理,也可抽取出纯⽂文本按⾮非结构化数据来处理。

⾮非结构化数据又⼀一种叫法叫全⽂文数据。

按照数据的分类,搜索也分为两种:•对结构化数据的搜索:如对数据库的搜索,⽤用SQL语句。

再如对元数据的搜索,如利⽤用windows搜索对⽂文件名,类型,修改时间进⾏行搜索等。

•对⾮非结构化数据的搜索:如利⽤用windows的搜索也可以搜索⽂文件内容,Linux下的grep命令,再如⽤用Google和百度可以搜索⼤大量内容数据。

对⾮非结构化数据也即对全⽂文数据的搜索主要有两种⽅方法:⼀一种是顺序扫描法(Serial Scanning):所谓顺序扫描,⽐比如要找内容包含某⼀一个字符串的⽂文件,就是⼀一个⽂文档⼀一个⽂文档的看,对于每⼀一个⽂文档,从头看到尾,如果此⽂文档包含此字符串,则此⽂文档为我们要找的⽂文件,接着看下⼀一个⽂文件,直到扫描完所有的⽂文件。

如利⽤用windows的搜索也可以搜索⽂文件内容,只是相当的慢。

如果你有⼀一个80G硬盘,如果想在上⾯面找到⼀一个内容包含某字符串的⽂文件,不花他⼏几个⼩小时,怕是做不到。

Linux下的grep命令也是这⼀一种⽅方式。

⼤大家可能觉得这种⽅方法⽐比较原始,但对于⼩小数据量的⽂文件,这种⽅方法还是最直接,最⽅方便的。

但是对于⼤大量的⽂文件,这种⽅方法就很慢了。

有⼈人可能会说,对⾮非结构化数据顺序扫描很慢,对结构化数据的搜索却相对较快(由于结构化数据有⼀一定的结构可以采取⼀一定的搜索算法加快速度),那么把我们的⾮非结构化数据想办法弄得有⼀一定结构不就⾏行了吗?这种想法很天然,却构成了全⽂文检索的基本思路,也即将⾮非结构化数据中的⼀一部分信息提取出来,重新组织,使其变得有⼀一定结构,然后对此有⼀一定结构的数据进⾏行搜索,从⽽而达到搜索相对较快的⽬目的。

这部分从⾮非结构化数据中提取出的然后重新组织的信息,我们称之索引。

这种说法⽐比较抽象,举⼏几个例⼦子就很容易明⽩白,⽐比如字典,字典的拼⾳音表和部⾸首检字表就相当于字典的索引,对每⼀一个字的解释是⾮非结构化的,如果字典没有⾳音节表和部⾸首检字表,在茫茫辞海中找⼀一个字只能顺序扫描。

然⽽而字的某些信息可以提取出来进⾏行结构化处理,⽐比如读⾳音,就⽐比较结构化,分声母和韵母,分别只有⼏几种可以⼀一⼀一列举,于是将读⾳音拿出来按⼀一定的顺序排列,每⼀一项读⾳音都指向此字的详细解释的页数。

我们搜索时按结构化的拼⾳音搜到读⾳音,然后按其指向的页数,便可找到我们的⾮非结构化数据——也即对字的解释。

这种先建⽴立索引,再对索引进⾏行搜索的过程就叫全⽂文检索(Full-text Search)。

下⾯面这幅图描述了全⽂文检索的⼀一般过程。

全⽂文检索⼤大体分两个过程,索引创建(Indexing)和搜索索引(Search)。

•索引创建:将现实世界中所有的结构化和⾮非结构化数据提取信息,创建索引的过程。

•搜索索引:就是得到⽤用户的查询请求,搜索创建的索引,然后返回结果的过程。

于是全⽂文检索就存在三个重要问题:1. 索引⾥里⾯面究竟存些什么?(Index)2. 如何创建索引?(Indexing)3. 如何对索引进⾏行搜索?(Search)下⾯面我们顺序对每个个问题进⾏行研究。

⼆二、索引⾥里⾯面究竟存些什么索引⾥里⾯面究竟需要存些什么呢?⾸首先我们来看为什么顺序扫描的速度慢:其实是由于我们想要搜索的信息和⾮非结构化数据中所存储的信息不⼀一致造成的。

⾮非结构化数据中所存储的信息是每个⽂文件包含哪些字符串,也即已知⽂文件,欲求字符串相对容易,也即是从⽂文件到字符串的映射。

⽽而我们想搜索的信息是哪些⽂文件包含此字符串,也即已知字符串,欲求⽂文件,也即从字符串到⽂文件的映射。

两者恰恰相反。

于是如果索引总能够保存从字符串到⽂文件的映射,则会⼤大⼤大提⾼高搜索速度。

由于从字符串到⽂文件的映射是⽂文件到字符串映射的反向过程,于是保存这种信息的索引称为反向索引。

反向索引的所保存的信息⼀一般如下:假设我的⽂文档集合⾥里⾯面有100篇⽂文档,为了⽅方便表⽰示,我们为⽂文档编号从1到100,得到下⾯面的结构左边保存的是⼀一系列字符串,称为词典。

每个字符串都指向包含此字符串的⽂文档(Document)链表,此⽂文档链表称为倒排表(Posting List)。

有了索引,便使保存的信息和要搜索的信息⼀一致,可以⼤大⼤大加快搜索的速度。

⽐比如说,我们要寻找既包含字符串“lucene”又包含字符串“solr”的⽂文档,我们只需要以下⼏几步:1. 取出包含字符串“lucene”的⽂文档链表。

2. 取出包含字符串“solr”的⽂文档链表。

3. 通过合并链表,找出既包含“lucene”又包含“solr”的⽂文件。

看到这个地⽅方,有⼈人可能会说,全⽂文检索的确加快了搜索的速度,但是多了索引的过程,两者加起来不⼀一定⽐比顺序扫描快多少。

的确,加上索引的过程,全⽂文检索不⼀一定⽐比顺序扫描快,尤其是在数据量⼩小的时候更是如此。

⽽而对⼀一个很⼤大量的数据创建索引也是⼀一个很慢的过程。

然⽽而两者还是有区别的,顺序扫描是每次都要扫描,⽽而创建索引的过程仅仅需要⼀一次,以后便是⼀一劳永逸的了,每次搜索,创建索引的过程不必经过,仅仅搜索创建好的索引就可以了。

这也是全⽂文搜索相对于顺序扫描的优势之⼀一:⼀一次索引,多次使⽤用。

三、如何创建索引全⽂文检索的索引创建过程⼀一般有以下⼏几步:第⼀一步:⼀一些要索引的原⽂文档(Document)。

为了⽅方便说明索引创建过程,这⾥里特意⽤用两个⽂文件为例:⽂文件⼀一:Students should be allowed to go out with their friends, but not allowed to drink beer.⽂文件⼆二:My friend Jerry went to school to see his students but found them drunk which is not allowed.第⼆二步:将原⽂文档传给分次组件(Tokenizer)。

分词组件(Tokenizer)会做以下⼏几件事情(此过程称为Tokenize):1. 将⽂文档分成⼀一个⼀一个单独的单词。

2. 去除标点符号。

3. 去除停词(Stop word)。

所谓停词(Stop word)就是⼀一种语⾔言中最普通的⼀一些单词,由于没有特别的意义,因⽽而⼤大多数情况下不能成为搜索的关键词,因⽽而创建索引时,这种词会被去掉⽽而减少索引的⼤大⼩小。

英语中挺词(Stop word)如:“the”,“a”,“this”等。

对于每⼀一种语⾔言的分词组件(Tokenizer),都有⼀一个停词(stop word)集合。

经过分词(Tokenizer)后得到的结果称为词元(Token)。

在我们的例⼦子中,便得到以下词元(Token):“Students”,“allowed”,“go”,“their”,“friends”,“allowed”,“drink”,“beer”,“My”,“friend”,“Jerry”,“went”,“school”,“see”,“his”,“students”,“found”,“them”,“drunk”,“allowed”。

第三步:将得到的词元(Token)传给语⾔言处理组件(Linguistic Processor)。

语⾔言处理组件(linguistic processor)主要是对得到的词元(Token)做⼀一些同语⾔言相关的处理。

对于英语,语⾔言处理组件(Linguistic Processor)⼀一般做以下⼏几点:1. 变为⼩小写(Lowercase)。

2. 将单词缩减为词根形式,如“cars”到“car”等。

这种操作称为:stemming。

3. 将单词转变为词根形式,如“drove”到“drive”等。

这种操作称为:lemmatization。

Stemming 和 lemmatization的异同:•相同之处:Stemming和lemmatization都要使词汇成为词根形式。

•两者的⽅方式不同:o Stemming采⽤用的是“缩减”的⽅方式:“cars”到“car”,“driving”到“drive”。

o Lemmatization采⽤用的是“转变”的⽅方式:“drove”到“drove”,“driving”到“drive”。

•两者的算法不同:o Stemming主要是采取某种固定的算法来做这种缩减,如去除“s”,去除“ing”加“e”,将“ational”变为“ate”,将“tional”变为“tion”。

o Lemmatization主要是采⽤用保存某种字典的⽅方式做这种转变。

⽐比如字典中有“driving”到“drive”,“drove”到“drive”,“am, is,are”到“be”的映射,做转变时,只要查字典就可以了。

•Stemming和lemmatization不是互斥关系,是有交集的,有的词利⽤用这两种⽅方式都能达到相同的转换。

语⾔言处理组件(linguistic processor)的结果称为词(Term)。

在我们的例⼦子中,经过语⾔言处理,得到的词(Term)如下:“student”,“allow”,“go”,“their”,“friend”,“allow”,“drink”,“beer”,“my”,“friend”,“jerry”,“go”,“school”,“see”,“his”,“student”,“find”,“them”,“drink”,“allow”。

也正是因为有语⾔言处理的步骤,才能使搜索drove,⽽而drive也能被搜索出来。

第四步:将得到的词(Term)传给索引组件(Indexer)。

索引组件(Indexer)主要做以下⼏几件事情:1. 利⽤用得到的词(Term)创建⼀一个字典。

在我们的例⼦子中字典如下:Term Document IDstudent1allow1go1their1friend1allow1drink1beer1my2friend2jerry2go2school2see2his2student2find2them2drink2allow22. 对字典按字母顺序进⾏行排序。

Term Document IDallow1allow1allow2beer1drink1drink2find2friend1friend2go1go2his2jerry2my2school2see2student1student2their1them23. 合并相同的词(Term)成为⽂文档倒排(Posting List)链表。

相关文档
最新文档