全文搜索与倒排索引 骑猪看日落 2022-05-22 03:14 222阅读 0赞 # 一、全文搜索 # 全文搜索是指计算机搜索程序通过扫描文章中的每一个词,对每一个词建立一个索引, 指明该词在文中出现的次数和位置,当用户查询时,搜索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户。这个过程类似于通过字典中的搜索字表查字的过程,Lucene是目前全球使用最广的全文搜索引擎开源库。 # 二、Lucene倒排索引 # 倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址,由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为**倒排索引(inverted index)**。 带有倒排索引的文件我们称为倒排索引文件,简称**倒排文件(inverted file)**。 倒排索引中的索引对象是文档或者文档集合中的单词等,用来存储这些单词在一个文档或者一组文档中的存储位置,是对文档或者文档集合的一种最常用的索引机制。搜索引擎的关键步骤就是建立倒排索引,倒排索引一般表示为一个关键词,然后是它的频度(出现的次数)、位置(出现在哪一篇文章或网页中,及有关的日期,作者等信息),好比一本书的目录、标签一般读者想看哪一个主题相关的章节,直接根据目录即可找到相关的页面。不必再从书的第一页到最后一页,一页一页地查找。 # 三、倒排索引创建过程 # 假设有两篇文章1和文章2。 文章1的内容为:`Tony lives in chongqing, I live in chongqing too.` 文章2的内容为:`He once lived in shanghai.` **取关键词** 由于Lucene是基于关键词索引和查询的,首先要取得这两篇文章的关键词,通常需要如下处理措施: 1. 现在有的是文章内容,即一个字符串,先要找出字符串中的所有单司,即分词。 2. 英文单词由于用空格分隔,比较好处理。中文单词间由于是连在一起的,所以需要特殊的分词处理。 3. 文章中的“in” “once” “too”等词没有什么实际意义,中文中的“的” “是”等字通常也无具体含义,这些不代表概念的词是可以过滤掉的。 4. 用户通常希望查“He”时能把含“he”和“HE”的文章也找出来,所以所有单词 需要统一大小写: 5. 用户通常希望查“live”时能把含“lives”和“lived”的文章也找出来,所以需要 把 “lives”,“lived” 还原成 “live” 。 6. 文章中的标点符号通常不表示某种概念,也可以过滤掉。 在Lucene中以上措施由Analyzer类完成。经过上面处理后,得到如下结果: 文章1的所有关键词为:`[tony] [live] [chongqing] [i] [live] [chongqing]` 文章2的所有关键词为:`[he] [live] [shanghai]` **文章1和文章2经过倒排后的对应关系** <table> <thead> <tr> <th>关键词</th> <th align="center">文章号</th> </tr> </thead> <tbody> <tr> <td>tony</td> <td align="center">1</td> </tr> <tr> <td>live</td> <td align="center">1,2</td> </tr> <tr> <td>chongqing</td> <td align="center">1</td> </tr> <tr> <td>i</td> <td align="center">1</td> </tr> <tr> <td>he</td> <td align="center">2</td> </tr> <tr> <td>shanghai</td> <td align="center">1,2</td> </tr> </tbody> </table> **倒排索引关键词频率位置** <table> <thead> <tr> <th>关键词</th> <th align="center">文章好[出现频率]</th> <th align="right">出现位置</th> </tr> </thead> <tbody> <tr> <td>tony</td> <td align="center">1[1]</td> <td align="right">1</td> </tr> <tr> <td>live</td> <td align="center">1[2]</td> <td align="right">2,5</td> </tr> <tr> <td></td> <td align="center">2[1]</td> <td align="right">2</td> </tr> <tr> <td>chongqing</td> <td align="center">1[2]</td> <td align="right">3,6</td> </tr> <tr> <td>i</td> <td align="center">1[1]</td> <td align="right">4</td> </tr> <tr> <td>he</td> <td align="center">2[1]</td> <td align="right">1</td> </tr> <tr> <td>shanghai</td> <td align="center">2[1]</td> <td align="right">3</td> </tr> </tbody> </table> 出现位置是指在关键词中的位置。
相关 倒排索引 倒排索引的核心组成:(包含两个部分) 单词词典(Term Dictionary):记录所有文档的单词,记录单词到倒排列表的关联关系 单词词 Myth丶恋晨/ 2023年07月03日 03:21/ 0 赞/ 26 阅读
相关 正排索引与倒排索引 <table> <tbody> <tr> <td> <p>(1)</p> </td> <td> <p>Java是世界上最好的编程语言</p> </td 女爷i/ 2022年11月03日 10:53/ 0 赞/ 244 阅读
相关 倒排索引 倒排索引是 es 中非常重要的索引结构,是从文档词项到文档 ID 的一个映射过程。 8.1 "正排索引" 我们在关系型数据库中见到的索引,就是“正排索引”。 8.2 灰太狼/ 2022年10月31日 14:59/ 0 赞/ 221 阅读
相关 倒排索引 1.什么是倒排索引 倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是 ╰半夏微凉°/ 2022年08月27日 11:42/ 0 赞/ 289 阅读
相关 倒排索引 倒排索引简单地就是:根据单词,返回它在哪个文件中出现过,而且频率是多少的结果。这就像百度里的搜索,你输入一个关键字,那么百度引擎就迅速的在它的服务器里找到有该关键字的文件,并根 我不是女神ヾ/ 2022年07月30日 13:25/ 0 赞/ 259 阅读
相关 倒排索引 创建两个文件数据,并上传到hdfs data file edit file file view search data2 abc - 日理万妓/ 2022年06月06日 04:41/ 0 赞/ 347 阅读
相关 全文检索&倒排索引 全文检索&倒排索引 设计 ![951ueNT.png][] 全文检索 建立索引,快速定位搜索 倒叙索引 分词 根据分词来定位 梦里梦外;/ 2022年06月01日 12:54/ 0 赞/ 207 阅读
相关 倒排索引 1.单词——文档矩阵 单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义。图3-1的每列代表一个文档,每行代表一个单词,打对勾 我不是女神ヾ/ 2022年05月22日 06:47/ 0 赞/ 319 阅读
相关 全文搜索与倒排索引 一、全文搜索 全文搜索是指计算机搜索程序通过扫描文章中的每一个词,对每一个词建立一个索引, 指明该词在文中出现的次数和位置,当用户查询时,搜索程序就根据事先建立的索引进行 骑猪看日落/ 2022年05月22日 03:14/ 0 赞/ 223 阅读
相关 倒排索引 倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的... 小灰灰/ 2020年05月01日 19:45/ 0 赞/ 922 阅读
还没有评论,来说两句吧...