JAVA全系列 教程
3762个小节阅读:7088.7k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
电商网站的搜索框都会提供根据前缀补齐关键字的功能,接下来我们编写这一功能。
编写搜索服务接口实现类
xxxxxxxxxx
// 自动补齐
@Override
public List<String> autoSuggest(String keyword) {
// 1.创建补全条件
SuggestBuilder suggestBuilder = new SuggestBuilder();
SuggestionBuilder suggestionBuilder = SuggestBuilders
.completionSuggestion("tags")
.prefix(keyword)
.skipDuplicates(true)
.size(10);
suggestBuilder.addSuggestion("prefix_suggestion", suggestionBuilder);
// 2.发送请求
SearchResponse response = template.suggest(suggestBuilder, IndexCoordinates.of("goods"));
// 3.处理结果
List<String> result = response
.getSuggest()
.getSuggestion("prefix_suggestion")
.getEntries()
.get(0)
.getOptions()
.stream()
.map(Suggest.Suggestion.Entry.Option::getText)
.map(Text::toString)
.collect(Collectors.toList());
return result;
}
编写搜索控制器
xxxxxxxxxx
/**
* 用户商品搜索
*/
@RestController
@RequestMapping("/user/goodsSearch")
public class GoodsSearchController {
@DubboReference
private SearchService searchService;
/**
* 自动补齐关键字
*
* @param keyword 被补齐的词
* @return 补齐的关键词集合
*/
@GetMapping("/autoSuggest")
public BaseResult<List<String>> autoSuggest(String keyword) {
List<String> keywords = searchService.autoSuggest(keyword);
return BaseResult.ok(keywords);
}
}