正常的索引一般是指关系型数据库里的索引. 把不同的数据存放到不同的字段中.如果要实现baidu或google那种搜索,就需要与一条记录的多个字段进行比对,需要 全表扫描,如果数据量比较大的话,性能就很低. 那反过来,如果把mysql中存放在不同字段中字符串,按一定规则拆分成term[词]存放到 一个字段中[套用mysql中的表结构,实际上不是这样处理的],然后把这些词存放到一个字段中,并在这个字段建立索引. 这样一来,搜索时,只需要查 带有索引的这列就可以了[这一点和关系型数据库 field_n…
一.正排索引(前向索引) 正排索引也称为"前向索引".它是创建倒排索引的基础,具有以下字段. (1)LocalId字段(表中简称"Lid"):表示一个文档的局部编号. (2)WordId字段:表示文档分词后的编号,也可称为"索引词编号". (3)NHits字段:表示某个索引词在文档中出现的次数. (4)HitList变长字段:表示某个索引词在文档中出现的位置,即相对于正文的偏移量. 由于一篇文章中的某些词可能出现多次,而且位置不同,而全文检索的本…
# index_box 提供搜索功能的实现- 持有std::vector<ITEM> _buffer; 存储所有文章信息- 持有ForwardIndex _forward_index;    - _forward_index.build_findex( _buffer )    - get_all_items _forward_index.get_all_items    - get_items _forward_index.get_items(docid_vect, result, filt…
搜索的时候,要依靠倒排索引:排序的时候,需要依靠正排索引,看到每个document的每个field,然后进行排序,所谓的正排索引,其实就是doc values.在建立索引的时候,一方面会建立倒排索引,以供搜索用:一方面会建立正排索引,也就是doc values,以供排序,聚合,过滤等操作使用.doc values是被保存在磁盘上的,此时如果内存足够,os会自动将其缓存在内存中,性能还是会很高:如果内存不足够,os会将其写入磁盘上. 倒排索引举例:doc1: hello world you and…
相关度评分 TF&IDF算法 Elasticsearch的相关度评分(relevance score)算法采用的是term frequency/inverse document frequency算法,简称为TF/IDF算法. 算法介绍: relevance score算法:简单来说就是,就是计算出一个索引中的文本,与搜索文本,它们之间的关联匹配程度. TF/IDF算法:分为两个部分,IF 和IDF Term Frequency(TF): 搜索文本中的各个词条在field文本中出现了多少次,出现…
搜索的时候,要依靠倒排索引:排序的时候,需要依靠正排索引,看到每个document的每个field,然后进行排序,所谓的正排索引,其实就是doc values 在建立索引的时候,一方面会建立倒排索引,以供搜索用:一方面会建立正排索引,也就是doc values,以供排序,聚合,过滤等操作使用 doc values是被保存在磁盘上的,此时如果内存足够,os会自动将其缓存在内存中,性能还是会很高:如果内存不足够,os会将其写入磁盘上   向index中存储的文档 PUT /cc_article/lo…
主要知识点: 本节没有太懂,以后复习时补上       聚合分析的内部原理是什么????aggs,term,metric avg max,执行一个聚合操作的时候,内部原理是怎样的呢?用了什么样的数据结构去执行聚合?是不是用的倒排索引?     搜索+聚合,写个示例     GET /test_index/test_type/_search { "query": { "match": { "search_field": "test&quo…
正向索引的结构如下: “文档1”的ID > 单词1:出现次数,出现位置列表:单词2:出现次数,出现位置列表:…………. “文档2”的ID > 此文档出现的关键词列表. 一般是通过key,去找value.  当用户在主页上搜索关键词“华为手机”时,假设只存在正向索引(forward index),那么就需要扫描索引库中的所有文档,找出所有包含关键词“华为手机”的文档,再根据打分模型进行打分,排出名次后呈现给用户.因为互联网上收录在搜索引擎中的文档的数目是个天文数字,这样的索引结构根本无法满足实时…
1.区别 搜索的时候,要依靠倒排索引:排序的时候,需要依靠正排索引,看到每个document的每个field,然后进行排序,所谓的正排索引,其实就是doc values 在建立索引的时候,一方面会建立倒排索引,以供搜索用:一方面会建立正排索引,也就是doc values,以供排序,聚合,过滤等操作使用 doc values是被保存在磁盘上的,此时如果内存足够,os会自动将其缓存在内存中,性能还是会很高:如果内存不足够,os会将其写入磁盘上 下面两条document doc1: hello wor…
1.单词——文档矩阵 单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义.图3-1的每列代表一个文档,每行代表一个单词,打对勾的位置代表包含关系. 图3-1 单词-文档矩阵 从纵向即文档这个维度来看,每列代表文档包含了哪些单词,比如文档1包含了词汇1和词汇4,而不包含其它单词.从横向即单词这个维度来看,每行代表了哪些文档包含了某个单词.比如对于词汇1来说,文档1和文档4中出现过单词1,而其它文档不包含词汇1.矩阵中其它的行列也可作此种解读. 搜索引擎的索引其实就是实…