1. 程式人生 > 其它 >(ElasticSearch)中文字串精確搜尋 term 搜不到結果

(ElasticSearch)中文字串精確搜尋 term 搜不到結果

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 搜不到結果