ElasticSearch(七):Java操作elasticsearch基於smartcn中文分詞查詢


 1 package com.gxy.ESChap01;  2 
 3 import java.net.InetAddress;  4 
 5 import org.elasticsearch.action.search.SearchRequestBuilder;  6 import org.elasticsearch.action.search.SearchResponse;  7 import org.elasticsearch.client.transport.TransportClient;  8 import org.elasticsearch.common.settings.Settings;  9 import org.elasticsearch.common.transport.InetSocketTransportAddress; 10 import org.elasticsearch.index.query.QueryBuilder; 11 import org.elasticsearch.index.query.QueryBuilders; 12 import org.elasticsearch.search.SearchHit; 13 import org.elasticsearch.search.SearchHits; 14 import org.elasticsearch.transport.client.PreBuiltTransportClient; 15 import org.junit.After; 16 import org.junit.Before; 17 import org.junit.Test; 18 /**
19  * 使用smartcn分詞查詢 20  * @author 郭祥躍 21  * 22  */
23 public class ESQuerySmartcn { 24     private static String host="192.168.56.3"; // 服務器地址
25     private static int port=9300; // 端口
26     
27     public static final String CLUSTER_NAME = "my-application"; //集群名稱
28     
29     private TransportClient client=null; 30     
31     private static final String ANALYZER="smartcn"; 32     
33     private static Settings settings= Settings.builder() 34             .put("cluster.name",CLUSTER_NAME) 35             .put("client.transport.sniff", true) 36  .build(); 37     
38     //獲取客戶端
39     @SuppressWarnings({ "resource", "unchecked" }) 40  @Before 41     public void getClient() throws Exception { 42         try { 43             client = new PreBuiltTransportClient(settings) 44                     .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host),port)); 45         } catch (Exception e) { 46             // TODO Auto-generated catch block
47  e.printStackTrace(); 48  } 49  } 50     
51     //關閉客戶端
52  @After 53     public void close() { 54         if(client!=null) { 55  client.close(); 56  } 57  } 58     /**
59  * 條件分詞查詢 60      */
61  @Test 62     public void search() { 63         SearchRequestBuilder srb=client.prepareSearch("book").setTypes("kehuan"); 64         SearchResponse sr=srb.setQuery(QueryBuilders.matchQuery("title", "三體").analyzer(ANALYZER)) 65                 .setFetchSource(new String[] {"title","price"},null) 66  .execute() 67  .actionGet(); 68         SearchHits hits=sr.getHits(); 69         for(SearchHit hit:hits){ 70  System.out.println(hit.getSourceAsString()); 71  } 72  } 73     /**
74  * 多字段條件分詞查詢 75      */
76  @Test 77     public void search2() { 78         SearchRequestBuilder srb=client.prepareSearch("book").setTypes("kehuan"); 79         SearchResponse sr=srb.setQuery(QueryBuilders.multiMatchQuery("美國宇宙紅岸", "title","content") 80  .analyzer(ANALYZER)) 81                 .setFetchSource(new String[] {"title","price"},null) 82  .execute() 83  .actionGet(); 84         SearchHits hits=sr.getHits(); 85         for(SearchHit hit:hits){ 86  System.out.println(hit.getSourceAsString()); 87  } 88  } 89 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM