当前位置:网站首页>RestAPI实现自动补全 & 案例实现(搜索框输入进行自动补全)
RestAPI实现自动补全 & 案例实现(搜索框输入进行自动补全)
2022-07-17 05:12:00 【其然乐衣】
一、RestAPI实现自动补全查询(代码讲解)



代码:
@Autowired
private RestHighLevelClient client;
@Test
void testSuggestion() throws IOException {
//1.准备Request
SearchRequest request = new SearchRequest("hotel");
//2.准备DSL
request.source().suggest(new SuggestBuilder().addSuggestion(
"suggestions",
SuggestBuilders.completionSuggestion("suggestion")
.prefix("hm")
.skipDuplicates(true)
.size(10)
));
//3.发起请求
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//4.解析结果
Suggest suggest = response.getSuggest();
//4.1 根据补全查询名称,获取更全的结果
CompletionSuggestion suggestions = suggest.getSuggestion("suggestions");
//4,2 获取options
List<CompletionSuggestion.Entry.Option> options = suggestions.getOptions();
//4.3 遍历
for( CompletionSuggestion.Entry.Option option : options){
String text = option.getText().toString();
System.out.println(text);
}
// System.out.println(response);
}其中:
@Autowired
private RestHighLevelClient client;
要在项目启动方法里面注入到bean里

二、以下进行黑马旅游网的案例实现自动补全功能:
开始时,输入x,不能自动补全

RestAPI实现自动补全:
(1)在controller层写好接口

@GetMapping("suggestion")
public List<String> getSuggestions(@RequestParam("key") String predix){
return hotelService.getSuggestions(predix);
}(2)在service层写好

@Override
public List<String> getSuggestions(String predix) {
try {
//1.准备Request
SearchRequest request = new SearchRequest("hotel");
//2.准备DSL
request.source().suggest(new SuggestBuilder().addSuggestion(
"suggestions",
SuggestBuilders.completionSuggestion("suggestion")
.prefix(predix)
.skipDuplicates(true)
.size(10)
));
//3.发起请求
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//4.解析结果
Suggest suggest = response.getSuggest();
//4.1 根据补全查询名称,获取更全的结果
CompletionSuggestion suggestions = suggest.getSuggestion("suggestions");
//4,2 获取options
List<CompletionSuggestion.Entry.Option> options = suggestions.getOptions();
//4.3 遍历
List<String> list = new ArrayList<String>(options.size());
for( CompletionSuggestion.Entry.Option option : options){
String text = option.getText().toString();
System.out.println(text);
list.add(text);
}
return list;
} catch (IOException e) {
throw new RuntimeException();
}
}(3)重新启动项目
便可以进行自动补全了

边栏推荐
- 4-20ma转4-20ma 0-5v转0-5v 模拟信号隔离变送器
- 锂电池充电管理芯片
- 李宏毅机器学习2022.7.15--梯度下降
- Proportional valve amplifier 1a, 2a, 3a, 5A proportional valve drive module 0-10V to 0-24v
- Review of software process and management (VII)
- 转速传感器信号隔离、采集及变换,正弦波、锯齿波信号输入,方波信号输出,信号转换器
- Unable to determine Electron version. Please specify an Electron version
- 【CS创世】 SD NAND和Raw NAND优劣势对比分析
- [speech recognition] Kaldi installation experience
- CS品牌SD NAND在空气质量检测行业中的应用案例
猜你喜欢
随机推荐
MCU单片机OTP
简单Chrome脚本 自动跳过b站视频播放结束后的的充电鸣谢页面
SD NAND与eMMC优劣势对比
热电阻pt100 CU50隔离转换器转4-20ma模拟量输出温度变送器0-10V
MySQL service is starting MySQL service failed to start
pcie CameraLink信号发生器(CameraLink图像模拟源)
FMC子卡:8 通道 125MSPS采样率16 位 AD 采集子卡
MCU单片机OTP
QuizCardGame
Tips for using tp4054 charging IC -- used in conjunction with Zhongke Lanxun ab5365b
2019CS品牌SDNAND和eMMC选择对比重要分析
三星系列NAND Flash有什么区别?
无线充电芯片IC
国产化FPGA/DSP/ZYNQ芯片&板卡方案
0-10V,4-20mA电流电压转PWM隔离转换器 质料以及应用电路图
Composition of wechat applet code
Speed sensor signal isolation, acquisition and transformation, sine wave and sawtooth wave signal input, square wave signal output, signal converter
[详细教程安装][配置] VsCode中关于Eslint的辅助插件
深入理解卡尔曼滤波器(3):多维卡尔曼滤波器
升压DC/DC转换器









