分布式搜索引擎概念
1.搜索引擎是什么?
搜索引擎是一个检索服务,主要分全文检索和垂直检索,比如 solr/elasticsearch
2.elasticsearch
elasticsearch是一个分布式的索引库,我这里简单理解成一个nosql的数据库,它对外提供检索服务,使用的是http协议(之前也用transport协议,6.x开始已被废弃,现在用于集群内部通信),对内就是个nosql数据库。
在ElasticSearch中我们会经常听到以下名词,现在我来将它和关系型数据库做一个对比:
image.png
3.分词
分词可以说是搜索引起的基石,如果一个搜索引擎没有好的分词器那么这个搜索引擎必然是失败的。
搜索是以词作为最小单元,依靠分词器进行构建,最后会生成一个倒排索引。
- 倒排索引:
倒排的意思就是我们把value对应成key,因为一个value是没有有办法得出确定的一篇文档的,可以得出很多。这就是倒排索引跟正向索引最大的不同点。 - 正向索引:
类似我们的HashMap。
4.TF-IDF
- TF:词频 一篇doc中包含了多少这个词,包含越多表明越相关。
- DF:文档频率 包含这个词的文档总数,比如 搜奶粉,你就去找奶粉在多少篇文档中出现了。
- IDF = 1/DF:逆文档,DF取反 也就是 1/DF;如果包含该词的文档越少,也就是DF越小,IDF越大,则说明词对这篇文档重要性就越大。
- TFIDF: TF*IDF 的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力。