教材:《信息检索导论》

倒排索引

How to build Inverted Index?

  1. Token sequence.

  2. Sort by terms.

  3. Dictionary & Postings

查询同时包含两单词的文档

【Qword1 and Qword2】

等高线式前进。

O(x+y)

【Qword1 and not Qword2】

O(m*log2n) = m个中的any one都要查看n个中是否也有(二分查找)。

【Qword1 or not Qword2】

O(m+n)

【Qword1 and Qword2 and Qword3 and ...】

借助 min-heap, 找 list 的时间。

Update min-heap: O(log2k), k = number of lists.

O(Total_Length * log2k)

Galloping Search

跳表:【Qword1 and Qword2】

- 源于skip pointers, but how to placing skip?

- L1/2

Normally, len(a) < len(b)

O( 2a*log2(b/a) )  [ better than O(a*log2b) 二分查找 ]

Stage1: Σi = 1log2(ni) = log2Πi=1(ni) <= log2(Σ(ni)/a)(柯西不等式) = log2(b/a)a = a*log2(b/a)

Stage2: 二分查找的cost与Stage1相近(因为都是2的指数级增长)

Pharse Queries

Biword Indexes

Ref: 《信息检索导论》第二章总结

排列组合。但总有些组合是没用的,导致False Positive增加。

所以要Filter out.

将两个词看成一个item,即在dictionary中都是两个词为一组。

比如invert and revert,则会变成invert and和and revert;但是这种做法使得倒排记录表迅速变大。

这种方法的缺点很多:

(1)不适用于单词查询。

(2)倒排记录表太大。

(3)查询有时还不正确。需要进行后过滤(即在查询词组中过滤一遍)

折中策略

(1)对于单个单词出现次数非常多,而组成一个词组后出现次数大大减少的词组,用biword index;

(2)对于那些经常被用户查询的词组,使用biword index;

(3)其余使用positional index【接下来的内容】

Positional Index --> Proximity Queries

支持位置信息查询

k词邻近搜索

对两个单词的位置有要求,比如两个单词必须“相距五个单词以内”。

Figure, 邻近搜索中两个倒排记录表 p1 和 p2 的合并算法,算法寻找两个词项在 k 个词之内出现的情形,

返回一个三元组<文档 ID,词项在 p1中的位置,词项在 p2中的位置>的列表。

Step:

步骤(3)表示,再搜索M上的后面的词的话,这一段就不需要再看了,也就是N链其实是需要被遍历一遍。

End.

[IR] Inverted Index & Boolean retrieval的更多相关文章

  1. [IR] Boolean retrieval

    How to build Inverted Index? 1. Token sequence. 2. Sort by terms. 3. Dictionary & Postings code ...

  2. [信息检索] 第一讲 布尔检索Boolean Retrieval

    第一讲 布尔检索Boolean Retrieval 主要内容: 信息检索概述 倒排记录表 布尔查询处理 一.信息检索概述 什么是信息检索? Information Retrieval (IR) is ...

  3. [Search Engine] Compression in Inverted Index

    最近在学一些搜索引擎的内容,感觉挺费劲,所以就用博客当做自己的笔记,遇到一些需要整理的部分,就在这里整理一下. 今天的内容是对inverted index进行压缩.核心思想,用我自己的话来总结,就是“ ...

  4. Fielddata is disabled on text fields by default. Set fielddata=true on [gender] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memor

    ES进行如下聚合操作时,会报如题所示错误: ➜ Downloads curl -XPOST 'localhost:9200/bank/_search?pretty' -d ' { "size ...

  5. 倒排索引(Inverted Index)

    倒排索引(Inverted Index) 倒排索引是一种索引结构,它存储了单词与单词自身在一个或多个文档中所在位置之间的映射.倒排索引通常利用关联数组实现.它拥有两种表现形式: inverted fi ...

  6. 正排索引(forward index)与倒排索引(inverted index)

    正常的索引一般是指关系型数据库里的索引. 把不同的数据存放到不同的字段中.如果要实现baidu或google那种搜索,就需要与一条记录的多个字段进行比对,需要 全表扫描,如果数据量比较大的话,性能就很 ...

  7. 反向索引(Inverted Index)

    转自:http://zhangyu8374.iteye.com/blog/86307 反向索引是一种索引结构,它存储了单词与单词自身在一个或多个文档中所在位置之间的映射.反向索引通常利用关联数组实现. ...

  8. Elasticsearch 报错:Fielddata is disabled on text fields by default. Set `fielddata=true` on [`your_field_name`] in order to load fielddata in memory by uninverting the inverted index.

    Elasticsearch 报错: Fielddata is disabled on text fields by default. Set `fielddata=true` on [`your_fi ...

  9. Elasticsearch:inverted index,doc_values及source

    以后会用到的相关知识:索引中某些字段禁止搜索,排序等操作 当我们学习Elasticsearch时,经常会遇到如下的几个概念: Reverted index doc_values source? 这个几 ...

随机推荐

  1. Java数据库操作的一些注意

    练习一:插入一个学生的四六级成绩: //课后练习 public class task3 { //添加一条数据 @Test public void testInsert() { int id=1; Sc ...

  2. 基于Java+Selenium的WebUI自动化测试框架(一)---页面元素定位器

    对于自动化测试,尤其是UI的自动化测试.是很多做黑盒功能测试的同学,入门自动化测试一个最为直观的或者说最容易理解的途径之一. 对于手工测试和自动化测试的优劣,网上有很多论述,在这里不作展开讨论.但是, ...

  3. Codeforces A. Game on Tree(期望dfs)

    题目描述: Game on Tree time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  4. 深度学习Keras框架笔记之Dense类(标准的一维全连接层)

    深度学习Keras框架笔记之Dense类(标准的一维全连接层) 例: keras.layers.core.Dense(output_dim,init='glorot_uniform', activat ...

  5. Spring Security 3多用户登录实现之二 多登录界面展示

    作者 接前讲,首先针对一个多种用户类型的登录需求,需要先实现多种用户类型的登录界面的展示,Spring Security提供了这样一个接口来帮助我们实现多种用户类型的登录界面的展示,这个接口就是Aut ...

  6. JS 不声明第三个变量的情况下实现两数变换

    1. var a = 1; var b = 2; a = a + b; b = a - b; a = a - b; console.log(a); console.log(b); 2. var a = ...

  7. echo如何输出带颜色的文本

    本文链接:https://blog.csdn.net/qualcent/article/details/7106483 ######################################## ...

  8. tox python项目虚拟环境管理自动化测试&&构建工具

    tox 是一个方便的工具,可以帮助我们管理python 的虚拟环境,同时可以进行项目自动测试以及构建 tox 如何工作的 说明 从上图我们也可以看出如何在我们项目中使用tox 参考资料 https:/ ...

  9. Hdu 3037 Saving Beans(Lucus定理+乘法逆元)

    Saving Beans Time Limit: 3000 MS Memory Limit: 32768 K Problem Description Although winter is far aw ...

  10. Codevs 3322 时空跳跃者的困境(组合数 二项式定理)

    3322 时空跳跃者的困境 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题目描述 Description 背景:收集完能量的圣殿战士suntian开始了他的追 ...