(ElasticSearch)中文字串精確搜尋 term 搜不到結果
阿新 • • 發佈:2021-11-20
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 是不分詞的意思