solr搜索引擎中的倒排索引

编程入门 行业动态 更新时间:2024-10-08 01:28:33

solr搜<a href=https://www.elefans.com/category/jswz/34/1771159.html style=索引擎中的倒排索引"/>

solr搜索引擎中的倒排索引

倒排索引
  倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值 的各记录的地址。由于不是由记录来确定属性值,而是由属性 值来确定记录的位置,因而称为倒排索引。带有倒排索引的文 件我们称为倒排索引文件,简称倒排文件。

  传统意义的数据库,做索引时,都是一个文档id对应一个或者多个内容字段。而 倒排索引则是一个内容字段对应多个文档id。什么意思呢?举个例子,假设分别 把下面三句话存储到mysql和solr中:
I like sports
I like reading
I like reading books

  在mysql中,一个文档id对应一条记录,一条记录中就会有一个或多个内容字段。 比如:文档id为1,对应“I like sports”;文档id为2,对应“I like reading”。 而在搜索时,就会一条记录一条记录的去检索,比如:我想搜索“books”字 段,就会先从文档1找起,文档1没有,文档2也没有,文档3找到了,好,返回数 据。相对来说,这样效率有点低。

  而在solr中,倒排索引就相反了。它会这样做索引,“I”内容字段,对应文档id 为1和2;“like”内容字段,对应文档id为1和2;“sports”内容字段,对应文 档id为1;“reading”内容字段,对应文档id为2和3;“books”内容字段,对 应文档id为3,等等。这样做的好处在哪呢?

  比如:我想搜索“like reading books”这句话,我会把这句话分成三个单 词“like”、“reading”、“books”(这在solr中叫分词),这时我开始通过 内容字段查找文档id。比如我找“like”,文档id为1、2、3,那么这三个文档都 可以取出来。然后,我接着找“reading”,这时,文档id为1的没有,只剩下2 和3了。最后,我找“books”,只剩下文档id为3的存在了。根据一定的算法, 这次搜索结果,会给三个文档打分,从高到低:文档3、文档2、文档1。返还给用 户优先级,也是3、2、1。
  这样做的好处是:不用按照文档id,一个一个的遍历内容字段了,而是根据多个 内容字段,去找交叉最多的文档id(当然了,匹配文档id不止内容字段交叉,还 有时间、权重等因素,方便理解,省略了),这样做的话,搜索速度立马上升。

更多推荐

solr搜索引擎中的倒排索引

本文发布于:2024-02-14 05:26:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1762045.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:索引   搜索引擎   solr

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!