#每日精进#2020年8月1日


 【《无证之罪》紫金陈,阅读总结】
这本书也是在刷完了网剧版(秦昊、邓家佳主演,《无证之罪》8.2分 )之后来读的原著。电视剧版还是做了很大的改动的,整个作品作为侦探推理小说来讲还是可圈可点的,一名技术精尖的法医犯罪,可以把所有证据消灭掉;一个辞职了刑警队长的大学数学教授,可以把高次方程的理论代入到案件的推导中。最后的结局说实话竟然是团灭,真的没有想到。怎么说,个人不是很喜欢这个结局。喜欢推理的同学,可以一看。
 
https://ask.zkbhj.com/?/article/351
 
【Elasticsearch全文检索的实现原理简介】
 
全文搜索原理:倒排索引
 
大家都知道,在数据库中直接全表查询的时间复杂度是o(n),如果对索引列进行查询,其时间复杂度为o(logn),如果数据以key-value形式存储,查询时间复杂度将降为o(1)。那么在全文搜索中我们直接建立从查询词到文档的映射是不是也就获得了o(1)的查询性能?这种词汇到文档的映射被称之为倒排索引。 
索引、类型与文档
  • 索引:含相同属性的文档集合。相当于关系型数据库中的一个database
  • 类型:索引可以定义一个或者多个类型,文档必须属于一个类型,其相当于关系型数据库中的表,是通过mapping定义的。mapping中主要包括字段名、字段数据类型和字段索引类型这3个方面的定义,相当于关系型数据库中的schema。(类型在ES7.0中已被废弃)
  • 文档:可以被索引的基本数据单位,也是全文搜索中被搜索的对象,可以对应一个网页,一篇txt文档或者一个商品。 相当于关系型数据库中的表中的一行记录。

 
分片

有时候一个索引的数据量非常大,甚至超出了单机的存储能力,这个时候需要对索引分片存储,分别存到不同机器上。

备份

为了防止节点故障到时索引分片丢失,一般会对分片进行备份。备份除了可以保障数据安全性,还可以分担搜索的压力。

ES创建索引默认5个分片,1个备份,分片只能在创建索引的时候指定而备份可以后期动态修改。 
查询
 
//指定属性查询
{
"query":{
"match":{
"name":"一页书"
}
}
}

//范围查询
{
"query":{
"range":{
"age{
"gte":18,
"lte":60
}
}
}
}

//多个条件联合查询
{
"query":{
“bool”: {
"must":[
{
"match":{
"name":"一页书"
}
},
{
"filter":{
"term"{
"age":18
}
}
}
]
}
}
}
match、macth_phrase、multi_match与term的区别
  • match对会先对query进行分词,只要文档里面包含一个query中一个词就会被搜出来;
  • macth_phrase也会对query进行分词,但一个文档必须包含query里面所有的词才会被搜出来,可以通过slop参数降低这种约束;

  • multi_match对多个字段同时进行匹配;
  • term表示完全匹配,不对query进行分词,直接去匹配索引。

{
"query": {
"match_phrase": {
"content" : {
"query" : "我的宝马多少马力",
"slop" : 1
}
}
}
}
https://zhuanlan.zhihu.com/p/94181307
 
【中文分词及结巴分词原理】
 
昨天在跟同事讨论我们搜索系统在做实体识别的时候,具体的实现原理是什么,当时对比的是ES是如何做分词的,想当然的理解成结巴也是用的词典树来实现的,今天查了一下,其实不是词典树,而是有向无环图(DAG)。
 
自如的NLP部分(实体识别)用的技术方案是结巴分词。所以,今天详细深入了解下一下中文分词及结巴分词相关的内容。详细见:
https://ask.zkbhj.com/?/article/364
 
 

0 个评论

要回复文章请先登录注册