内容简介:假设有一个交友网站,信息表如下:
内容概要
- 倒排索引是什么?为什么需要倒排索引?
- 倒排索引是怎么工作的?
1. 倒排索引是什么?
假设有一个交友网站,信息表如下:
美女1:“ 我要找在上海做 PHP 的哥哥。 ”
需要匹配 性别、城市、语言列 。
美女2:“ 我要找北京的爱旅游、爱美食的 JAVA 哥哥。 ”
更复杂了是吧,实际场景中,会有更复杂的排列组合。
对于这类的搜索,关系型数据库的索引就很难应付了,适合使用全文搜索的倒排索引。
倒排索引是一种数据库的索引形式,存储了 “内容 -> 文档” 映射关系 ,目的是快速的进行全文搜索。
2. 倒排索引是怎么工作的?
主要包括2个过程:
- 创建倒排索引
- 倒排索引搜索
2.1 创建倒排索引
举个例子,有2个文档:
- Document#1
“ Recipe of pasta with sauce pesto ”
- Document#2
“ Recipe of delicious carbonara pasta ”
先对文档进行分词,形成一个个的 token ,也就是 单词 ,然后保存这些 token 与文档的对应关系。
结果如下:
2.2 倒排索引搜索
搜索示例:
- 搜索 “ pasta recipe ”
先分词,得到2个 token,( “ pasta ”、“ recipe ” )。
然后去倒排索引中进行匹配。
这2个词在2个文档中都匹配,所以2个文档都会返回,而且分数相同。
- 搜索 “ carbonara pasta ”
同样,2个文档都匹配,都会返回。
这次 document#2 的分数要比 document#1 高。
因为 #2 匹配了2个词(“ carbonara ”、“ pasta ”),#1 只匹配了一个(“ pasta ”)。
2.3 转换
有时我们可以在保存和搜索之前对 token 进行一些转换,最普遍的例如:
- 扔掉停止词
停止词是那些使用量非常大,但又没有什么意义的词。
例如英文中的 “ of”, “the”, “for ” ……
- 元素化
把单词处理为字典中的标准词,例如:
“running” => “run”
“walks” => “walk”
“thought” =>“think”
- 词干分析
通过切断词尾将一个词转换成词根形式的过程。
不能处理不规则动词的情况,但可以处理字典中没有的词。
以上所述就是小编给大家介绍的《ElasticSearch 倒排索引简析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- ElasticSearch 倒排索引简析
- Lucene 倒排索引原理
- Elasticsearch中的倒排索引
- Lucene之倒排索引简述(1)
- Lucene倒排索引实现原理探秘(2)
- Elasticsearch 6.x 倒排索引与分词
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
为什么中国没出Facebook
谢文 / 凤凰出版社 / 2011-7-1 / 39.80元
《为什么中国没出Facebook》对互联网的游戏规则、市场、格局、模式及发展趋势等多方面进行了阐述,既勾画出了理想中的互联网生态及其本质,又联系中国实际,探讨了中国互联网行业的未来发展。《为什么中国没出Facebook》提出了在互联网成事应该符合的8条原则,比较了Facebook、MySpace、Twitter三种创新模式,指出了Web2.0平台时代新浪、腾讯、百度、搜狐等互联网巨头的未来方向,也......一起来看看 《为什么中国没出Facebook》 这本书的介绍吧!