我有点怀疑你在刷屏

想做城市搜索,麻烦大佬们给个思路

Elasticsearch | 作者 Han_ | 发布于6 天前 | 阅读数:184

1.为了性能用了term查询,
2.分词用了ik分词ik_max_word之后,输入如“俄罗”搜索不到结果
3.一次查询可能会匹配省市区国家名字,所以用了bool的should
4.要求按照匹配评分返回,且前面匹配到的词语优先显示
已邀请:

Han_

赞同来自: SkySkin

希望大佬们看了我的东西之后给个思路,我确实第一次做,没有经验。

God_lockin

赞同来自: SkySkin

想匹配“俄罗”可能需要prefix或者ngram的方式,term是完全匹配
 
前面匹配到的优先显示可以prefix给高点的权重分
 
不确定搜的是国家还是城市的话可以bool+should,multi_match或者通过copy_to的方式搜

Han_

赞同来自:

请看代码

SkySkin

赞同来自:

不确定搜的是国家还是城市的话可以bool+should,multi_match或者通过copy_to的方式搜不确定搜的是国家还是城市的话可以bool+should,multi_match或者通过copy_to的方式搜不确定搜的是国家还是城市的话可以bool+should,multi_match或者通过copy_to的方式搜不确定搜的是国家还是城市的话可以bool+should,multi_match或者通过copy_to的方式搜不确定搜的是国家还是城市的话可以bool+should,multi_match或者通过copy_to的方式搜不确定搜的是国家还是城市的话可以bool+should,multi_match或者通过copy_to的方式搜

SkySkin

赞同来自:

111

SkySkin

赞同来自:

111

SkySkin

赞同来自:

222
 

SkySkin

赞同来自:

886

laoyang360 - [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

1.为了性能用了term查询,
需要结合业务实现。
2.分词用了ik分词ik_max_word之后,输入如“俄罗”搜索不到结果
因为你的词典中没有俄罗这个词,需要更新词典,或者采用standard默认分词+match_phrase的结合的分词+检索方式。
3.一次查询可能会匹配省市区国家名字,所以用了bool的should
结合业务实现即可。
4.要求按照匹配评分返回,且前面匹配到的词语优先显示
除了使用filter,默认的 bool must must_not should都是按照评分返回的。

要回复问题请先登录注册