豆瓣镇楼
目录 书分8章
- 简介, 安装, java api 这些时效性太强, 跳过.
- 开发中文搜索, 介绍分词和插件开发. 估计也可以跳过.
- mapping 这个要好好看看
- 源码分析 时效性也挺强,看看结构吧
- 提高搜索相关性 向量空间模型, BM25模型,学习评分, 检索意图识别 感觉这个有点高级,可能用不上暂时
- 界面开发, searchkit 是啥. springboot, pebble, spring-data-elasticsearch, rest, vue,
suggester,word2vec,rust开发界面??? 这一锅都什么玩意. 突然想弃了 - elastic stack kafka分布式流平台啥意思, kafka stream ? graylog 是啥, 涨涨知识先.
- 案例 介绍 双语句对 搜索,cms搜索,临床医药实验搜索…
感觉这玩意过于易用, 其实本身的dsl-sql 那部分才是要特别关注的感觉. 这书估计有一半内容是可看的, 很多估计都过时了. 好像是15年的老书了.
现在es 7 都快不支持java8了
适合对象
- 信息检索技术爱好者, 好吧,还有爱这个的
- 搜索引擎开发人员 我应该算这个, 虽然很一般
- seo人?? 对公优化就算了. 对私优化,估计我算
- 算法研究, 算了. 没心情看那些树. 倒是有时间可以统一翻一翻
- ???
作者居然是 1+n 多人编写的书, 除了特殊情况基本都是垃圾书.希望这书不是. 我看看先.. 公司买这书干嘛
正文
还是顺序看吧, 先看目录有个底,前面可以稍微快点.
cmd 部分就当骗稿费了.
第一章
json格式 好吧, 写过parser就不看了
graph LR
Lucene --> es
netty --> es
刚刚其实好像看目录, 这货还有guice
es 支持多协议, tcp传输… 默认http. 话说, 为啥servlet,memcached也算是协议?? 我是记错了? zeromq听过
这个http 协议又讲了一遍, 真的来凑字数啊.
也不是, 东西还挺全的. 应该只是抓不住重点..
cron, 生产机器的ip暴露都说了.. httpie也出来了.
http http://localhost:9200/_cluster/health
第二章
trie树和马尔科夫链??
打个 todo 吧. 用到再回来看. 这书还是挺用心的嘛
Elasticsearch 5.2.0中包含的Lucene 6.4.0有了让人满意的解决办法,可以进行同义词查询,只要在搜索时间而不是索引时间应用同义词即可。
第三章 mapping
其实主要就是为了看这章.
感觉前3小节啥都没讲, 没超出es文档第一章start. 第四章讲了个如何自动检测数据类型, json进来以后直接parse不就行了吗. 这用的dfa…
BasicAutomata.makeCharRange(‘0’, ‘9’).repeat(1);
这怎么跑到regex匹配去了,这就是[0-9]{1}的java写法啊.. 这段也跳过了吧,回头再看一下master regex 3
第四章 深入源码
基础的Lucene使用还是用过的, indexwriter,indexreader,document啥的.
ivy 知道就行了.
4.1.4 这个并发控制, 硬盘写入 用的 引用计数来做的. 涨知识了
这还能扯到 juc包atomicinteger. 有意思. 好吧, 居然真讲了半天的
并发控制.. 这个还是看专门的书吧. dog lea的就行.
4.2 启动
- 命令行参数parse,
JOpt Simple - ioc容器 guice
- jodatime, 其实就是 jdk8转正那个小三
- transport 网络线程中不能调用阻塞代码,所以需要把网络线程和非网络线程区分开。枚举类型Transports中的静态方法isTransportThread()根据线程的名字判断一个线程是否为网络线程。
- threadpool+queue 永恒的王啊,到处都是他
- 模块
·transport-netty4:用于网络通信;
·aggs-matrix-stats:矩阵聚合在多个字段上工作,并产生一个矩阵作为输出;
·analysis-common:包含一些常用的TokenFilter;
·ingest-common:实现摄取的公用类;
·lang-expression:实现表达式脚本引擎;
·lang-mustache:Mustache脚本引擎;
·lang-painless:painless脚本引擎;
·parent-join:父连接;
·percolator:实现注册查询功能;
·reindex:重新索引Elasticsearch数据;
·repository-url:用于URL存储的模块。
- netty reactor
- 缓存 lru,lfu,fifo 节点查询缓存、分片请求缓存和字段数据缓存。 Sematex datadog 可以监控缓存.. 估计用不上 简单的可以用命令. curl -XGET ‘http://localhost:9200/_cat/nodes?v&h=id,queryCacheMemory,
分布式 这玩意是es的王者部分啊.做的很好了 zen discovery 选举算法不是
peer-reviewed published algorithm… 只是先选节点编号小的 经典的 N/2 +1 防止脑裂理想的拓扑结构是有3个专用的主节点(即master:true并且data:false没有使用Spring实现依赖注入的原因是:Spring需要配置文件,用起来太笨重。Elasticsearch直接把Guice的源码放入了自己的 org.elasticsearch.common.inject包内 不知道es会换springboot么
跨集群搜索, 这个是真高级. 头回知道
jvm monitor, 为啥会讲这个…
Lucene 6 基本已经代码收敛了.. 其实netty也是.. 模型不变,几乎没啥必要动. 5就放弃了
第五章
·准确率=返回结果中相关文档数目/返回结果的数目;
·召回率=返回结果中相关文档数目/所有相关文档数目。
这部分跳了..
第六章
Searchkit居然是react.. 这vue react都上, 确定大丈夫?
Suggesters(搜索词提示推荐器)基本的运作原理是将输入的文本分解为词,然后在索引的字典里查找相似的词并返回。根据使用场景的不同,Elasticsearch里设计了4种类别的Suggester,分别是 Term Suggester、Phrase Suggester、Completion Suggester和Context Suggester。
FST
第八章
okhttp, jsoup
别说这书的框架用的还行.
- 爬虫
- 英语分词 这个好玩还以为不需要呢
- 句子切分
- 词性标注
学到一个药物临床实验数据地址 http://www.chinadrugtrials.org.cn/eap/clinicaltrials.
searchlist
PanLex 双语字典
Mono 也是很神奇啊这个技术选型
参考文献
[1]罗刚,张子宪,崔智杰.Java中文文本信息处理——从海量到精准[M].北京:清华大学出版社,2017. [2]罗刚.解密搜索引擎技术实战——Lucene&Java精华版(第3版)[M].北京:电子工业出版社,2016. [3]罗刚.网络爬虫全解析——技术、原理与实践[M].北京:电子工业出版社,2017. [4]尼克.人工智能简史[M].北京:人民邮电出版社,2017.
读后总评
居然几乎全是自己的书 这人挺有意思
书的质量不怎么样, 增长见闻还行. 作者好像很厉害.不过大佬估计也是个理科生, 重心把握可能不太好. 这书看下来,我也不知道我学到了什么. 似乎也全能学到? 涉及的面太广了.
还有就是, 这书到底是哪一年的.. string类型在5.x已经预备淘汰, 以后会淘汰. keyword 也没提到好像. 或许是老书??
或许我该先看看豆瓣的… 唉
吴下阿蒙 2018-11-17 胡拼乱凑的一本书,讲得很浅,而且逻辑性非常差。刷新了我的认知。
0 有用CyrilChien 2018-12-10 胡拼乱凑, cmd打开,cd切换目录,各种工具安装都能讲几页,逻辑混乱, 排版差劲, 真是刷新认知
0 有用ShineYoung 2018-08-21 读了一边,知识点零碎,不成体系,阅读体验很差,和看别人博客没什么区别,书也太薄了,一些原理春秋笔法带过,不懂的人看不懂,懂的人看了用处不大,书的感觉更像是作者的学习笔记?