色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

ik分詞器和el java

錢多多2年前7瀏覽0評論

在Java中,ik分詞器和elasticsearch的結合是非常常見的。ik分詞器是一款中文分詞器,支持細粒度和粗粒度兩種分詞模式,使用簡單、效果好。而elasticsearch是一個基于Lucene的搜索引擎,提供了非常豐富的搜索功能。

// ik分詞器的使用示例
Analyzer analyzer = new IKAnalyzer(true);
String text = "中國人民站起來了";
TokenStream ts = analyzer.tokenStream(null, text);
ts.reset();
while (ts.incrementToken()) {
CharTermAttribute term = ts.getAttribute(CharTermAttribute.class);
// term.toString() 就是分詞結果
System.out.println(term.toString());
}

使用ik分詞器進行分詞時,我們需要提供一個文本串,并將分詞結果按順序輸出。可以看到,使用ik分詞器進行分詞非常簡單,只需要創建一個Analyzer對象,提供文本串并遍歷分詞結果即可。

// elasticsearch中使用ik分詞器進行搜索
QueryBuilder queryBuilder = QueryBuilders
.matchQuery("content", "中國人民");
SearchRequest searchRequest = new SearchRequest(index);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(queryBuilder);
searchSourceBuilder.from(0);
searchSourceBuilder.size(10);
searchRequest.source(searchSourceBuilder);
// 獲取ik分詞器
MapanalyzerMap = new HashMap<>();
analyzerMap.put("ik_max_word", new IKAnalyzer(true));
analyzerMap.put("ik_smart", new IKAnalyzer(false));
searchSourceBuilder.aggregation(
AggregationBuilders
.terms("content_agg")
.field("content")
.subAggregation(
AggregationBuilders
.topHits("top_hits")
.fetchSource(new String[]{"title", "content"}, null)
.size(1)
.sort("time", SortOrder.DESC)
)
.order(BucketOrder.count(false))
.size(10)
.analyzer("ik_smart")
);

在elasticsearch中,我們可以將ik分詞器作為分詞器使用。比如,下面的代碼片段中,我們查詢index索引中包含"中國人民"的文檔,并使用ik_smart分詞器對content字段進行分詞和聚合。可見使用ik分詞器進行搜索同樣非常簡單,只需要在SearchSourceBuilder中指定一下分詞器即可。