摘要:什么是倒排索引與正排索引相反,由查詢的過程,使用倒排索引。分詞后倒排索引我愛北京到家美好由檢索詞快速找到包含這個查詢詞的網頁就是倒排索引。
△什么是正排索引(forward index)?
簡言之,由key查詢實體的過程,使用正排索引。
例如,用戶表:
t_user(uid, name, passwd, age, sex)
由uid查詢整行的過程,就時正排索引查詢。
又例如,網頁庫:
t_web_page(url, page_content)
由url查詢整個網頁的過程,也是正排索引查詢。
網頁內容分詞后,page_content會對應一個分詞后的集合list。
簡易的,正排索引可以理解為:
Map>
能夠由網頁url快速找到內容的一個數據結構。
畫外音:時間復雜度可以認為是O(1)。
△什么是倒排索引(inverted index)?
與正排索引相反,由item查詢key的過程,使用倒排索引。
對于網頁搜索,倒排索引可以理解為:
Map>
能夠由查詢詞快速找到包含這個查詢詞的網頁的數據結構。
畫外音:時間復雜度也是O(1)。
舉個例子,假設有3個網頁:
url1 -> “我愛北京”
url2 -> “我愛到家”
url3 -> “到家美好”
這是一個正排索引:
Map。
分詞之后:
url1 -> {我,愛,北京}
url2 -> {我,愛,到家}
url3 -> {到家,美好}
這是一個分詞后的正排索引:
Map>。
分詞后倒排索引:
我 -> {url1, url2}
愛 -> {url1, url2}
北京 -> {url1}
到家 -> {url2, url3}
美好 -> {url3}
由檢索詞item快速找到包含這個查詢詞的網頁Map>就是倒排索引。
畫外音:明白了吧,詞到url的過程,是倒排索引。
正排索引和倒排索引是spider和build_index系統提前建立好的數據結構,為什么要使用這兩種數據結構,是因為它能夠快速的實現“用戶網頁檢索”需求。
畫外音,業務需求決定架構實現,查詢起來都很快。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74218.html
摘要:所有的倒排索引都是基于正排數據構建的。數據規模的難題節中描述的拆表的方式,本質上是將多個數值型拆成了多個插入記錄,然后再建立倒排索引。 超大規模檢索中的索引設計 一 問題背景 1.1 業務背景 精準廣告場景中,人群定向的常用方法是:根據各種不同的規則,將每一個用戶(User)打上豐富的標簽。與此同時,廣告主(Member)在根據規則圈選投放人群時,系統也會將廣告(Ad)打上各種的標...
摘要:倒排索引是基于詞的搜索。關于倒排索引要學習搜索引擎,就需要了解倒排索引,要更加深刻地理解倒排索引,就要先了解什么是正排索引表。由于不是由記錄來確定屬性值,而是由屬性值來確定記錄的位置,因而稱為倒排索引。 Lucene是什么? Lucene是apache軟件基金會4 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,但它不是一個完整的全文檢索引擎,而是一個全文檢索引...
摘要:基本概念在深入解讀之前,先了解下的幾個基本概念,以及這幾個概念背后隱藏的一些東西。如圖是一個內的基本組成,內數據只是一個抽象表示,不代表其內部真實數據結構。即詞典,是根據條件查找的基本索引。 前言 Apache Lucene是一個開源的高性能、可擴展的信息檢索引擎,提供了強大的數據檢索能力。Lucene已經發展了很多年,其功能越來越強大,架構也越來越精細。它目前不僅僅能支持全文索引,也...
閱讀 3154·2021-11-22 14:45
閱讀 3300·2019-08-29 13:11
閱讀 2306·2019-08-29 12:31
閱讀 922·2019-08-29 11:21
閱讀 2991·2019-08-29 11:09
閱讀 3616·2019-08-28 18:11
閱讀 1420·2019-08-26 13:58
閱讀 1273·2019-08-26 13:27