首页 > 技术文章 > (ElasticSearch)中文字符串精确搜索 term 搜不到结果

hwh000 2021-11-20 19:43 原文

1、问题:搜索college计算机学院的数据,原始数据中有,却搜不到结果,代码如下:

    public static void termQuery(Client client, String index, String type) {
        // Query
        QueryBuilder queryBuilder = QueryBuilders.termQuery("college", "计算机学院");
        // Search
        SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index);
        searchRequestBuilder.setTypes(type);
        searchRequestBuilder.setQuery(queryBuilder);
        // 执行
        SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();
        // 结果
        queryResult(searchResponse);
    }

2、原因:elasticsearch 里默认的IK分词器是会将每一个中文都进行了分词的切割,所以你直接想查一整个词,或者一整句话是无返回结果的。

3、解决方法:QueryBuilder queryBuilder = QueryBuilders.termQuery("college.keyword", "计算机学院");

4、说明: .keyword  是不分词的意思

 

 

博客参考:[ElasticSearch] 中文字符串精确搜索 term 搜不到结果

推荐阅读