搜索引擎是什么?
搜索引擎是个整体技术,是一系列检索服务。百度是全文检索(更注重文字的搜索)服务。像京东的商品是垂直型搜索引擎。
es是什么?
Elastic Search 在搜索引擎中是一个分布式索引库,nosql。有点像是程序中的mysql。对外提供检索服务,http或者transport协议对外提供搜索,restful的json。对内就是数据库。
Es名词定义:
索引 就是数据库但是不能叫数据库。
类型(type) ≈表 ex6.x 只有一个type,,之前可以建很多。es7.x就没有这个type了。
文档=行数据document 。
filed = column
缺点:nosql 非关系型的,没办法链接查询,就是跨索引查询(有点像mysql的跨表)。
在es中我们经常听到这些名词,现在拿这些名词和关系型数据库做对比:
分词:
NLP:自然语言处理。
搜索是以词为单位。
倒排索引:
就是我们的value 对应key, 因为没办法通过一个value确定我们的key所以返回的结果可能是多个,这就是倒排索引和正排索引的最大区别。
正向索引:
类似我们的hashmap,比如十篇文档,我们的1,2,3(类似我们的id)通过id找到value,
Doc: 1 ->content
Doc: 1 ->content、
TF-IDF :
TF:词频,一篇文章包含多了少这个词,包含越多说明跟这个词越相关。(例如: my name is zhaoxiaoyun zhaoxiaoyun。 zhaoxiaoyun就是最相关的)
DF:文档词频,包含这个词的文档总数。
IDF:逆文档,1/df 如果这个词包含的越少,就是df越小说明这个词对这个文档的重要性就越大,比如1/1只有一个文档出现了。
TFIDF:TF*IDF 数字越大说明这个文档和这个搜索的词关系越大, 比如一个文档出现了3次aa,只有一个文档有aa ,3*三分之一。 通过这个结果判断顺序。
Es:打分排序:BM25算法 里面有个 tfNom,有很多规则。