内容简介:假设有一个交友网站,信息表如下:
内容概要
- 倒排索引是什么?为什么需要倒排索引?
- 倒排索引是怎么工作的?
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 倒排索引与分词
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript凌厉开发
张鑫 黄灯桥、杨彦强 / 清华大学出版社 / 2010 年4月 / 49.00元
本书详细介绍Ext JS框架体系结构,以及利用HTML/CSS/JavaScript进行前端设计的方法和技巧。作者为Ext中文站站长领衔的三个国内Ext JS先锋,在开发思维和开发经验上有着无可争议的功力。 本书包含的内容有Ext.Element.*、事件Observable、Ext组件+MVC原理、Grid/Form/Tree/ComboBox、Ajax缓存Store等,并照顾JavaSc......一起来看看 《JavaScript凌厉开发》 这本书的介绍吧!