From 5e335405e5e4ca0136cc2e37eaedd4b0b6536ac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=89=E6=96=87=E6=9D=B0?= Date: Tue, 8 Oct 2019 20:40:34 +0800 Subject: [PATCH] inverted index --- .../倒排索引(Inverted Index).md | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/Algorithms In Big Data/倒排索引(Inverted Index).md b/Algorithms In Big Data/倒排索引(Inverted Index).md index 1bf717b..f8d32a6 100644 --- a/Algorithms In Big Data/倒排索引(Inverted Index).md +++ b/Algorithms In Big Data/倒排索引(Inverted Index).md @@ -1,13 +1,44 @@ ## 倒排索引(Inverted Index) -也叫反向索引。是文档检索系统中最常用的数据结构。常规的索引是文档到关键词的映射,如果对应的文档是 + +常规的索引是文档到关键词的映射,就是每个文档指向一个它所包含的索引项的序列,也就是文档文档指向了它包含的索引项序列,也就是文档指向它包含的哪些单词。 + +倒排索引也叫反向索引。是文档检索系统中最常用的数据结构。被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。 +常被应用于搜索引擎和关键字查询的问题中。比如文档检索系统中,查询哪些文件包含了某个单词。 + +而反向索引则是单词(关键词)指向包含了它的文档们。比如: + +``` +T0 = "it is what it is" +T1 = "what is it" +T2 = "it is a banana" +``` + +得到的反向文件索引是: + +``` +"a": {2} +"banana": {2} +"is": {0, 1, 2} +"it": {0, 1, 2} +"what": {0, 1} +``` + +当我们以”what” “is” “it”检索条件去查询时,结果集是: 。 +也就是结果集为文档0额文档1,但其实精确匹配的是文档1。 + + +### 数据结构 + +- 将文章提炼关键词,且每个关键词都对应这篇文章 +- 在加入新文章时,我们需要为新文章中的关键词索引和之前的合并 -[Elasticsearch](https://github.com/elastic/elasticsearch)就是使用倒排索引(inverted index)的结构来做快速的全文搜索。ElasticSearch 不仅用于全文搜索, 还有非常强大的统计功能 (facets)。 +### 参考 -携程,58,美团的分享中都提到ES构建实时日志系统,帮助定位系统问题。 +[Elasticsearch](https://github.com/elastic/elasticsearch) 就是使用倒排索引(inverted index)的结构来做快速的全文搜索; ElasticSearch 不仅用于全文搜索, 还有非常强大的统计功能 (facets),携程,58,美团的分享中都提到ES构建实时日志系统,帮助定位系统问题。 [Elasticsearch权威指南](http://es.xiaoleilu.com/index.html)