elasticsearch5 ik+拼音分词_java代码

1.TransportClient对象的创建:

  


    myClusterName:集群的名称

2.Index的创建:

   String json = "{\"analysis\":" + "{\"analyzer\":" +"{\"ik_pinyin_analyzer\":"
+ "{\"tokenizer\":\"ik_max_word\"," + "\"filter\":[\"my_pinyin\",\"word_delimiter\"]}},"
+ "\"filter\":{\"my_pinyin\" : "
+ "{\"type\":\"pinyin\",\"first_letter\":\"prefix\",\"padding_char\":\" \" }}}}";
    client.admin().indices().prepareCreate(indexName).setSettings(json).get();

     json字符串中,设置ik,拼音分词  ;   indexName:索引的名称

3.mapping的创建:

    String json="{\""+typeName+"\":{\"properties\":"  
                       + "{\"name\": {\"type\":\"keyword\",\"fields\": {\"pinyin\":{\"type\":\"text\",\"analyzer\":"+"\"ik_pinyin_analyzer\"}}}}}}";  
       client.admin().indices().preparePutMapping(indexName).setType(typeName).setSource(json).get();  

      typeName:type的名称

4.添加模拟数据:

     XContentBuilder builder = XContentFactory.jsonBuilder();

builder.startObject().field(column, value).endObject();

client.prepareIndex(indexName, typeName).setSource(builder).get();

5.测试:

     QueryBuilder query=QueryBuilders.termQuery("name.pinyin", "搜索的词");
 
 
       HighlightBuilder hiBuilder=new HighlightBuilder();  
       hiBuilder.preTags("<h2>");  
       hiBuilder.postTags("</h2>");  
       hiBuilder.field("name.pinyin");  
       // 搜索数据  
       SearchResponse resp= client.prepareSearch(index).setTypes(type).setQuery(query).highlighter(hiBuilder).execute().actionGet();
       //获取查询结果集  
       SearchHits searchHits = resp.getHits();  
       System.out.println("共搜到:"+searchHits.getTotalHits()+"条结果!");  
       //遍历结果  
       for(SearchHit hit:searchHits){  
           System.out.println("String方式打印文档搜索内容:");  
           System.out.println(hit.getSourceAsString());  
 
           if(null != hit && null != hit.getHighlightFields() && hit.getHighlightFields().size() > 0 ){            
               System.out.println("遍历高亮集合,打印高亮片段:");  
               Text[] text = hit.getHighlightFields().get("name.pinyin").getFragments();  
               for (Text str : text) {  
                   System.out.println(str.string());  
               }  
           }  
             
       } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值