使用 dmesg 来查看一些硬件或驱动程序的信息或问题。

es之十万个为什么?多个问题,欢迎解答

Elasticsearch | 作者 jimi | 发布于2020年06月05日 | 阅读数:1394

最近用项目用到es,遇到很多的问题,总结出来,希望得到高人解答。
1. 数据索引时用的ik_max_word分词,经常出现叠词评分更高,如我搜索 李军 , 结果李军军 排在李军的前面,求解?
2.数据索引时用来pinyin分词, 搜索 zhou li ,按理来说应该是周丽, 周力等数据,有时候会出现 力周 ,李周等数据,倒过来了,影响不大,但是有优化的方案吗?
3.医生数据类型 {'name': 李军, 'hospital': '人民医院', 'good_at': '高血压'} ,现在想通过医生名,医院名,擅长等字段去搜索医生数据,我用的multi_match多字段匹配,type用的best_fields,现在想过医院名搜索医生, 输入  人民医院 , 李军这条数据的确评分很高很靠前,但是也有名字叫 周人民,周医院 等医生数据,这些数据是name字段中含有部分的匹配,这些关联不大数据也会返回回来,我想去掉这些关联不大的数据怎么控制?
4.短语匹配,短语匹配一直用不好,因为用的match查询比较多,数据太杂,想着能精准的去匹配一些词语,用match_phrase,但是经常出现我搜全称反而搜索不到的情况? 如,医院名称是 北京第一人民医院, 我用match_phrase 去搜索全称, 也就是 北京第一人民医院, 但是反而没有结果? wtf ?这是什么情况? wtm服了?
未完待续......
 
已邀请:

God_lockin

赞同来自:

1. 有没试过李军的ik_max_word拆开的结果?如果李军不会被分词分在一起,那么搜的时候对于 query:【李军】的分词结果【李】+【军】,【李】+【军】+【军】的相关性更高,毕竟多了一个词元出来
POST _analyze
{
"text":"李军",
"analyzer":"ik_max_word"
}

2.周丽/力周这个可以考虑用match_phrase来保证你query内容的顺序
 
3.如果你确定【李军】这些名字,可以考虑用keyword而不是text+analyzer的方式来存,取的时候用term来匹配医生名字
 
4.同3.确定一些专有的名字的话,可以考虑用keyword做完全匹配的存取

要回复问题请先登录注册