24、深度探秘搜索技术之TF&IDF算法/向量空间模型算法/lucene的相关度分数算法
摘要:TF/IDF 单个term在doc中的分数 query: hello world --> doc.content doc1: java is my favourite programming language, hello world !!! doc2: hello java, you are ve
阅读全文
posted @
2021-08-21 18:26
溪水静幽
阅读(84)
推荐(0)
23 通过ngram分词机制实现index-time搜索推荐
摘要:什么是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,会被拆成 qui
阅读全文
posted @
2021-08-18 22:57
溪水静幽
阅读(166)
推荐(0)
16、使用原生cross-fiedls技术解决搜索弊端
摘要:可以解决 "operator": "and" GET /forum/_search { "query":{ "multi_match": { "query": "Peter Smith", "type":"cross_fields", "operator": "and", "fields": ["a
阅读全文
posted @
2021-08-08 15:47
溪水静幽
阅读(25)
推荐(0)
26 function_score自定义相关度分数算法
摘要:自定义一个function_score函数,将某个field的值,跟es内置算出来的分数进行运算,然后由自己指定的field来进行分数的增强 需求: 看帖子的人越多,那么帖子的分数就越高 先给所有的帖子数据增加follower数量 , 将对帖子搜索得到的分数,跟follower_num进行运算,由f
阅读全文
posted @
2020-12-16 22:58
溪水静幽
阅读(117)
推荐(0)
25 相关度分数优化方法
摘要:negative boost GET /forum/article/_search { "query": { "bool": { "must": [ { "match": { "content": "java" } } ], "must_not": [ { "match": { "content":
阅读全文
posted @
2020-12-01 23:35
溪水静幽
阅读(93)
推荐(0)
22 match_phrase_prefix实现search-time搜索推荐
摘要:构造数据 PUT /my_index1/1 { "content":"hello Jack" } PUT /my_index1/2 { "content":"hello John" } PUT /my_index1/3 { "content":"hello Jose" } PUT /my_index
阅读全文
posted @
2020-11-23 22:39
溪水静幽
阅读(91)
推荐(0)
20 使用rescoring机制优化近似匹配搜索的性能
摘要:match : 只要简单的匹配到一个term,就可以理解将term对应的doc作为结果返回,扫描倒排索引,扫描到了就可以 phrase match : 首先扫描到所有term的doc list; 找到包含所有term的doc list; 然后对每个doc都计算每个term的position,是否符合
阅读全文
posted @
2020-11-16 22:44
溪水静幽
阅读(78)
推荐(0)
19 使用match和近似匹配实现召回率(recall)与精准度(precision)的平衡
摘要:召回率recall 比如搜索一个java spark,总共有100个doc,能返回多少个doc作为结果,就是召回率,recall 精准度 precision 比如搜索一个java spark,能不能尽可能让包含java spark,或者是java和spark离的很近的doc,排在最前面,precis
阅读全文
posted @
2020-11-10 23:16
溪水静幽
阅读(257)
推荐(0)
18、基于slop参数实现近似匹配以及原理剖析
摘要:query string,搜索文本中的几个term,要经过几次移动才能与一个document匹配,这个移动的次数,就是slop 。 slop的phrase match,就是proximity match,近似匹配 如果指定slop,那么就允许搜索关键词进行移动,来尝试与doc进行匹配 搜索关键词k,
阅读全文
posted @
2020-11-09 23:27
溪水静幽
阅读(254)
推荐(0)
17、match_phrase query 短语匹配搜索
摘要:实现两个需求: java spark,就靠在一起,中间不能插入任何其他字符,就要搜索出来这种doc java spark,但是要求,java和spark两个单词靠的越近,doc的分数越高,排名越靠前 要实现上述两个需求,用match做全文检索,是不行的,必须得用proximity match,近似匹
阅读全文
posted @
2020-11-01 14:34
溪水静幽
阅读(2095)
推荐(0)
15 使用copy_to定制组合field解决cross-fields搜索弊端
摘要:新增数据 PUT /forum/_mapping { "properties": { "new_author_first_name": { "type": "text", "copy_to": "new_author_full_name" }, "new_author_last_name": { "
阅读全文
posted @
2020-10-29 23:38
溪水静幽
阅读(72)
推荐(0)
14、基于multi_match 使用cross-fields search
摘要:造数据 POST /forum/_bulk { "update": { "_id": "1"} } { "doc" : {"sub_title" : "learning more courses"} } { "update": { "_id": "2"} } { "doc" : {"sub_titl
阅读全文
posted @
2020-10-27 22:41
溪水静幽
阅读(78)
推荐(0)
13 基于multi_match+most fields策略进行multi-field搜索
摘要:增加一个字段sub_title,使用english分词器(会进行stemmer), 然后在这对sub_title增加一个子field ,使用standard分词器(不会进行stemmer) POST /forum/_mapping { "properties":{ "sub_title":{ "ty
阅读全文
posted @
2020-10-25 20:35
溪水静幽
阅读(88)
推荐(0)
10 基于dis_max实现best fields策略进行多字段搜索
摘要:TF (Term Frequency): 基于词项(term vector), 用来表示一个词项在某个文档中出现多少次。词频越高,文档得分越高 IDF (Inveres Dcoument Frequency): 基于词项(term vector)逆文档频率越高,词项就越罕见。 评分公式利用该因子为包
阅读全文
posted @
2020-07-21 08:14
溪水静幽
阅读(117)
推荐(0)
08 基于boost的细粒度搜索条件权重控制
摘要:如果给某个字段设置boost 为2 ,则意味着改字段的权重比其他的值的权重大一倍 。权重值默认为1 The boost is applied only for term queries (prefix, range and fuzzy queries are not boosted). 需求: 搜索
阅读全文
posted @
2020-07-17 07:58
溪水静幽
阅读(120)
推荐(0)
Pipeline 聚合分析
摘要:支持对聚合分析的结果,再次进行聚合分析;Pipeline 的分析结果会输出到原结果中,根据位置的不同,分为两类: Sibling - 结果和现有分析结果同级 max / min / avg & sum bucket stats / extended status bucket percentiles
阅读全文
posted @
2020-07-04 16:56
溪水静幽
阅读(234)
推荐(0)
聚合分析
摘要:ES作为搜索引擎兼数据库,同样提供强大的聚合分析能力。 bucket:一个数据分组 ,类比数据库的话,相当于group by metric:对一个数据分组执行的统计 ,常见的数据分析的metric操作有count,avg,max,min,sum等 ES聚合分析查询的写法 "aggregations"
阅读全文
posted @
2020-06-14 12:25
溪水静幽
阅读(250)
推荐(0)
查询建议
摘要:自动补全 针对自动补全场景而设计的建议器。此场景下用户每输入一个字符的时候,就需要即时发送一次查询请求到后端查找匹配项,在用户输入速度较高的情况下对后端响应速度要求比较苛刻。因此实现上它和前面两个Suggester采用了不同的数据结构,索引并非通过倒排来完成,而是将analyze过的数据编码成FST
阅读全文
posted @
2020-06-13 18:14
溪水静幽
阅读(149)
推荐(0)
tf-idf 相关性计算模型简介
摘要:1、什么是停用词?索引时做停用词处理的目的是什么? 不再使用的词,做停用词处理的目的是提高索引的效率,去掉不需要的索引操作,即停用词不需要索引 2、如果在索引时应用停用词处理,下面的两个查询会查询什么词项? the brown fox—— brown fox not happy——happy 3、索
阅读全文
posted @
2020-06-13 10:57
溪水静幽
阅读(342)
推荐(0)
分词器
摘要:Analyzer 分析器 character filter :字符过滤器,对文本进行字符过滤处理,如处理文本中的html标签字符。处理完后再交给tokenizer进行分词。一个analyzer中可包含0个或多个字符过滤器,多个按配置顺序依次进行处理。tokenizer:分词器,对文本进行分词。一个a
阅读全文
posted @
2020-06-12 22:14
溪水静幽
阅读(223)
推荐(0)