ElasticSearch解决中文搜索只能搜索单个字符的问题

问题描述

我写了一个搜索的小项目,想利用es来实现高亮搜索,但是突然发现,我的搜索功能,只能搜出来英文譬如java,dior,vue等等,但是像医学,高等数学就搜不出来了!

解决思路

一开始,我以为是我的请求发送过去导致了中文乱码

    new Vue({
        el:'#app',
        data:{
            keyword:'' ,//搜索的关键字
            results:[] //搜索的结果
        },
        methods:{
            searchKey(){
                var keyword = this.keyword;
                console.log(keyword);
                //对接后端接口
                axios.get('search/'+keyword+"/1/20").then(response=>{
                    console.log(response);
                    //绑定数据
                    this.results = response.data;
                })
            }
        }
    })

我以为我的后台收到的请求keyword搜索关键字乱码了,但是后台打印一下发现并没有乱码!!

再次寻找解决思路

我后来查阅资料好像说是分词器的问题!!!诶,有道理
我就试了试单搜一个“医”字或者“学”发现真能搜出来,那么也就有一点眉目了,但是这个分词器要改么?我一开始觉得是词库没有医学之类的词语,天真!!人家词库量太大,不可能没有医学两个字的词语,然后就问大佬,看博客,后来找到了一片类似的博客
老哥的原连接:https://blog.csdn.net/qq_44961149/article/details/107300665
有兴趣的可以去看一下
原因出在:

  //实现搜索功能
    public List<Map<String,Object>> searchPage(String keyword,int pageNo,int pageSize) throws IOException {
   

        if (pageNo<1){
   
            pageNo = 1;
        }
        /
  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会写代码的花城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值