设置参数 `node.name` 可以自定义 Elasticsearch 节点的名字。 此条 Tips 由 medcl 贡献。

elasticsearch大量字段的模糊搜索

Elasticsearch | 作者 yuanzhi | 发布于2021年01月07日 | 阅读数:2081

若要根据a字段进行查询,a字段中长度不一且大部分情况下字符数较多。如何能够建立较为全面和较为精确的查询呢?
主要问题:由于字段中字符数较多,就算随便键盘敲几个字也能搜索出一些结果,但是这些结果是不相关的,如何阻止不相关结果的返回?
已邀请:

FFFrp

赞同来自: yuanzhi

你用match或者match_phrase查询按照相关性排序比较短的会出现在前面,一些匹配到了但是比较长不相关的出现在后面,可以设置一个min_score设置一个最小的相关性打分来控制最低的相关性打分,将比这个分数低的都过滤掉,具体的文档可以看https://www.elastic.co/guide/e ... .html,这样的问题就是需要查询两次

JiangJibo - 喊我雷锋

赞同来自: yuanzhi

最好能说下你的检索情况,模糊匹配,还是全文检索,性质不一样的,如果想要精确点的结果,可以多搜几个关键词,用minimum_should_match 

yuanzhi - 卧龙之才,远胜于吾

赞同来自:

我再描述一下我的情况吧,我有以下搜索代码:(其中query字段是我随便打的)
GET _search
{
"from" : 0, "size" : 3,
"query": {
"match": {
"question": {
"query":"阿松大骄傲司机到i时间都怕死",
"minimum_should_match": "75%"

}
}
}
}
返回的结果:
 
朋友的信任
 伟大的信任产生在伟大的友谊之上,友谊是信任的基础。——梭罗 公元前4世纪,在意大利,有一个名叫皮斯阿司的年轻人触犯了国王。皮斯阿司被判绞刑,在某个法定的日子要被处死。 皮斯阿司是个孝子,在临死之前,他希望与远在百里之外的母亲见最后一面,以表达他对母亲的歉意,因为他不能为母亲养老送终了。他的这一要求被告知了国王。 国王感其诚孝,决定让皮斯阿司回家与母亲相见,但条件是皮斯阿司必须找到一个人来替他坐牢,否则他的这一愿望只能是镜中花,水中月。这是一个看似简单其实近乎不可能实现的条件。有谁肯冒着被杀头的危险替别人坐牢,这岂不是自寻死路?但,茫茫人海,就有人不怕死,而且真的愿意替别人坐牢,他就是皮斯阿司的朋友达蒙。  达蒙住进牢房以后,皮斯阿司回家与母亲诀别。人们都静静地看着事态的发展。日子如水,皮斯阿司也没有回来的迹象。人们一时间议论纷纷,都说达蒙上了皮斯阿司的当。 行刑日是个雨天,当达蒙被押赴刑场之时,围观的人都在笑他愚蠢,那真叫愚不可及,幸灾乐祸的大有人在。但刑车上的达蒙,不但面无惧色,反而有一种慷慨赴死的豪情。  追魂炮被点燃了,绞索也已经挂在达蒙的脖子上。有胆小的人吓得紧闭双眼,他们在内心深处为达蒙深深地惋惜,并痛恨那个出卖朋友的小人皮斯阿司。 但是,就在这千钧一发之际,在淋漓的风雨中,皮斯阿司飞奔而来,他高喊着:“我回来了!我回来了!” 这真是人世间最最感人的一幕,大多数的人都以为自己在梦中,但事实不容怀疑。这个消息宛如长了翅膀,很快传到了国王的耳中。国王闻听此言,也以为这是痴人说梦。 国王亲自赶到刑场,他要亲眼看一看自己优秀的子民。最终,国王万分喜悦地为皮斯阿司松了绑,并亲口赦免了他的罪。 这是一个真实的故事,不但感人,而且震撼人的灵魂。千百年来,有关朋友的解释有千种万种。其实,有关朋友的解释中只需两个字,那就是“信任”。1.用自己的话完成下面的问题。(1)“镜中花,水中月”是指皮斯阿司要回去与母亲相见这件事就像  ,不可能 。(2)“幸灾乐祸”是说有些人看到 有灾祸,心里却感到,说明这些人没有善意。
 
 
关联程度并不很大,得分_score只有31,我该如何阻止该结果的返回

FFFrp

赞同来自:

用match对于这样的长字段相关性都比较差,尝试使用match_phrase控制slop试试

要回复问题请先登录注册