摘要: 主要知识点: 知道IK默认的配置文件信息 自定义词库 一、ik配置文件 ik配置文件地址:es/plugins/ik/config目录 IKAnalyzer.cfg.xml:用来配置自定义词库 main.dic:ik原生内置的中文词库,总共有27万多条,只要是这些单词,都会被分在一起 quantifier.dic:放了一些单位相关的词 su... 阅读全文
posted @ 2018-03-08 22:02 outback123 阅读(706) 评论(0) 推荐(0) 编辑
摘要: 在之前我们学的都是英文,用的也是英文的standard分词器。从这一节开始,学习中文分词器。中国人基本上都是中文应用,很少是英文的,而standard分词器是没有办法对中文进行合理分词的,只是将每个中文字符一个一个的切割开来,比如说中国人 --> 中 国 人 在中方搜索引擎领域,比较成熟和流行的,就是ik分词器。 一、在elasticsearch中安装ik中文分词器 ... 阅读全文
posted @ 2018-03-08 22:01 outback123 阅读(1292) 评论(0) 推荐(0) 编辑
摘要: 搜索的时候,可能输入的搜索文本会出现误拼写的情况,这时就需要es为我们进行智能纠错 比如有两个文档: doc1: hello world doc2: hello java 现在要搜索:hallo world,我们本来是想搜索hello word,但是我们拼写错了,写成hallo word,所以要用到fuzzy搜索技术 :自动将拼写错误的搜索文本,进行纠正,纠正以后去尝试匹配索引中的... 阅读全文
posted @ 2018-03-08 21:04 outback123 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 我们可以做到自定义一个function_score函数,自己将某个field的值,跟es内置算出来的分数进行运算,然后由自己指定的field来进行分数的增强 一、准备数据 给所有的帖子数据增加follower数量 POST /forum/article/_bulk { "update": { "_id": "1"} } { "doc" : {"follower_num" ... 阅读全文
posted @ 2018-03-08 19:57 outback123 阅读(1023) 评论(0) 推荐(0) 编辑
摘要: 对相关度评分进行调节和优化的常见的4种方法 一、query-time boost, 如果认为某一个term的比较重要,就把这个term的权重设的大一点,也就是把boost的值设的大一点。 GET /forum/article/_search { "query": { "bool": { "should": [ { ... 阅读全文
posted @ 2018-03-08 16:14 outback123 阅读(445) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: boolean model IF/IDF vector space model 一、boolean model 在es做各种搜索进行打分排序时,会先用boolean model 进行初步的筛选,boolean model类似and这种逻辑操作符,先过滤出包含指定term的doc。must/must not/should(过滤、包含、不包含 、可能包含)这几种情... 阅读全文
posted @ 2018-03-08 12:34 outback123 阅读(764) 评论(0) 推荐(0) 编辑
摘要: 一、ngram和index-time搜索推荐原理 1、什么是ngram 假设有一个单词:quick,在5种长度下的ngram情况如下: ngram length=1,q u i c k ngram length=2,qu ui ic ck ngram length=3,qui uic ick ngram length=4,quic uick ngram length=5,qu... 阅读全文
posted @ 2018-03-08 11:52 outback123 阅读(872) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 搜索推荐的使用场景 用法 原理 一、搜索推荐的使用场景 搜索推荐,就是在你做搜索时,当你写出一部搜索词时,es会自提示接下来要写的词,比如当你在搜索hello w 时,如果es中有如下文档,则es会自动提示hello word、hello we、hello wind。类似我们在用百度时的自动搜索提示。 hello world hello we ... 阅读全文
posted @ 2018-03-08 10:42 outback123 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 前缀搜索 通配符搜索 正则搜索 一、前缀搜索 假如有如下doc数据: C3D0-KD345 C3K5-DFG65 C4I8-UI365 现在搜索前缀为C3数据,会把前两个都搜索出来 1、语法: GET my_index/my_type/_search { "query": { "prefix": { "t... 阅读全文
posted @ 2018-03-08 10:19 outback123 阅读(827) 评论(0) 推荐(0) 编辑
摘要: 一、match和phrase match(proximity match)区别 1、match:只要简单的匹配到了一个term,就会将term对应的doc作为 结果返回。 2、phrase match : 首先扫描到所有term的doc list; 找到包含所有term的doc list; 然后对每个doc都计算每个term的position,然后进行复杂的计算... 阅读全文
posted @ 2018-03-08 09:03 outback123 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 召回率的慨念 精准度的慨念 match和近似匹配混合使用方法 召回率(recall):比如你搜索一个java spark,总共有100个doc,能返回多少个doc作为结果,就是召回率。 精准度(precision):比如你搜索一个java spark,能不能尽可能让包含java spark,或者是java和spark离的很近的doc... 阅读全文
posted @ 2018-03-08 09:02 outback123 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: slop的含义(内在原理) slop的用法 一、slop的含义是什么? query string(搜索文本)中的几个term,要经过几次移动才能与一个document匹配,这个移动的次数,就是slop 举例如下:一个query string经过几次移动之后可以匹配到一个document,然后设置slop 假如有如下一句话:hello world, java i... 阅读全文
posted @ 2018-03-08 09:01 outback123 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: match_phrase的使用场景 match_phrase的用法 match_phrase的原理 一、什么是近似匹配 match_phrase的使用场景 现假设有两个句子 1、java is my favourite programming language, and I also think spark is a very good bi... 阅读全文
posted @ 2018-03-08 09:00 outback123 阅读(10988) 评论(0) 推荐(3) 编辑
摘要: 主要知识点: 在index的mapping中加copy_to字段的方法 copy_to搜索方法 用most_fields策略,去实现cross-fields搜索,有3大弊端,为了解决这三个弊端,es的第一个办法就是用copy_to将多个field组合成一个field。 most_fields策略问题就出在有多个field,es只要将一个标识跨在多个field的情况,合并... 阅读全文
posted @ 2018-03-08 08:59 outback123 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 原生cross-fiels的用法 原生cross-fiels解决三个弊端 一、原生cross-fiels的用法 GET /forum/article/_search { "query": { "multi_match": { "query": "Peter Smith", "type": "cross_fields", ... 阅读全文
posted @ 2018-03-08 08:59 outback123 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: cross-fields 的使用场景 cross-fields 使用方法 cross-fields 的缺点 一、cross-fields 的使用场景 cross-fields搜索,一个唯一标识可能存在于多个field。比如一个人的标识是姓名;一个建筑的标识是地址。姓名可以分步在多个field中,比如first_name和last_name中,地址可以分步在... 阅读全文
posted @ 2018-03-08 08:58 outback123 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 most-fields策略的用法 most-fields策略和best-fields的比较 best-fields策略:将某一个field匹配尽可能多的关键词的doc优先返回回来,也就是说如果这个filed匹配了更多的关键词,那么这个doc的分数就会更高。 most-fields策略:尽可能返回更多field匹配到某个关键词的doc,优先返回回... 阅读全文
posted @ 2018-03-08 08:57 outback123 阅读(282) 评论(0) 推荐(0) 编辑