JAVA全系列 教程
3762个小节阅读:7092.7k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
电商网站的搜索框都会提供根据前缀补齐关键字的功能,接下来我们编写这一功能。
编写搜索服务接口实现类
xxxxxxxxxx
// 自动补齐
@Override
@SneakyThrows
public List<String> autoSuggest(String keyword){
// 1.自动补齐查询条件
Suggester suggester = Suggester.of(
s -> s.suggesters("prefix_suggestion", FieldSuggester.of(
fs -> fs.completion(
cs -> cs.skipDuplicates(true)
.size(10)
.field("tags")
)
)).text(keyword)
);
// 2.自动补齐查询
SearchResponse<Map> response = client.search(s -> s.index("goods")
.suggest(suggester), Map.class);
// 3.处理查询结果
Map resultMap = response.suggest();
List<Suggestion> suggestionList = (List) resultMap.get("prefix_suggestion");
Suggestion suggestion = suggestionList.get(0);
List<CompletionSuggestOption> resultList = suggestion.completion().options();
List<String> result = new ArrayList<>();
for (CompletionSuggestOption completionSuggestOption : resultList) {
String text = completionSuggestOption.text();
result.add(text);
}
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);
}
}
在higress中配置网关
测试接口