当前位置: 首页 > news >正文

网站建设方案 预算宿州高端网站建设公司

网站建设方案 预算,宿州高端网站建设公司,深圳企业网站seo,全国最好的广告公司加盟效果展示 在搜索框根据拼音首字母进行提示 拼音分词器 和IK中文分词器一样的用法#xff0c;按照下面的顺序执行。 # 进入容器内部 docker exec -it elasticsearch /bin/bash# 在线下载并安装 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch…效果展示 在搜索框根据拼音首字母进行提示 拼音分词器 和IK中文分词器一样的用法按照下面的顺序执行。  # 进入容器内部 docker exec -it elasticsearch /bin/bash# 在线下载并安装 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v7.12.1/elasticsearch-analysis-pinyin-7.12.1.zip#退出 exit #重启容器 docker restart elasticsearch 重启完成之后进行拼音分词可以看见每个字都有以及整个词语首字母组合成的一个。 ​ 自定义分词器 只用默认的功能还远远不够。 先用ik进行分词再用拼音分词器分 ​ ​ PUT /test {settings: {analysis: {analyzer: { my_analyzer: { tokenizer: ik_max_word,filter: py}},filter: {py: { type: pinyin,keep_full_pinyin: false,keep_joined_full_pinyin: true,keep_original: true,limit_first_letter_length: 16,remove_duplicated_term: true,none_chinese_pinyin_tokenize: false}}}},mappings: {properties: {name:{type: text,analyzer: my_analyzer}}} } 在test这份索引库当中再次测试就可以看见既有中文也有拼音分词了。 POST /test/_analyze {text:[北岭山脚鼠鼠],analyzer: my_analyzer } ​ 但是这里还会有问题用中文搜索时会把同音字也一起搜索到 ​ 指定搜索时和创建时用不同的分词器 ​ 在上面的语句里面加上了一条 search_analyzer: ik_smart POST /test/_doc/1 {id: 1,name: 狮子 } POST /test/_doc/2 {id: 2,name: 虱子 }GET /test/_search {query: {match: {name: 掉入狮子笼咋办}} } 结果如下 ​ DSL实现自动补全查询 ​ 查询补全语法 ​ 数据准备 // 自动补全的索引库 PUT test2 {mappings: {properties: {title:{type: completion}}} } // 示例数据 POST test2/_doc {title: [Sony, WH-1000XM3] } POST test2/_doc {title: [SK-II, PITERA] } POST test2/_doc {title: [Nintendo, switch] } 查询语句 // 自动补全查询 GET /test2/_search {suggest: {title_suggest: {text: s, // 关键字completion: {field: title, // 补全字段skip_duplicates: true, // 跳过重复的size: 10 // 获取前10条结果}}} } ​ ​ 酒店数据自动补全 ​ 修改酒店索引库数据结构 DELETE /hotel # 酒店数据索引库 PUT /hotel {settings: {analysis: {analyzer: {text_anlyzer: {tokenizer: ik_max_word,filter: py},completion_analyzer: {tokenizer: keyword,filter: py}},filter: {py: {type: pinyin,keep_full_pinyin: false,keep_joined_full_pinyin: true,keep_original: true,limit_first_letter_length: 16,remove_duplicated_term: true,none_chinese_pinyin_tokenize: false}}}},mappings: {properties: {id:{type: keyword},name:{type: text,analyzer: text_anlyzer,search_analyzer: ik_smart,copy_to: all},address:{type: keyword,index: false},price:{type: integer},score:{type: integer},brand:{type: keyword,copy_to: all},city:{type: keyword},starName:{type: keyword},business:{type: keyword,copy_to: all},location:{type: geo_point},pic:{type: keyword,index: false},all:{type: text,analyzer: text_anlyzer,search_analyzer: ik_smart},suggestion:{type: completion,analyzer: completion_analyzer}}} } 先删除再重新创建一个 然后在HotelDoc这个实体类里面新增一个字段suggestion,这个字段是由现有的字段组成放进去。 private ListString suggestion;this.suggestion Arrays.asList(this.brand,this.business);然后重新执行之前的批量插入的语句 ​ 再次测试搜索可以看见搜索得到的结果里面多出了品牌和商圈信息。  ​ 但是这里business字段有可能是由多个的要进行切割。 修改HotelDoc上面的构造方法的代码 if(this.business.contains(、)){//business有多个值需要切割String[] arr this.business.split(、);//添加元素this.suggestionnew ArrayList();this.suggestion.add(this.brand);Collections.addAll(this.suggestion,arr);}else {this.suggestion Arrays.asList(this.brand, this.business);} 再次插入数据可以看见多个词条已经分开了。  ​ 进行搜索测试 搜索所有以h开头的词条 ​ RestAPI实现自动补全 ​ 请求组装响应解析 Testvoid testSuggest() throws IOException {//1.准备requestSearchRequest request new SearchRequest(hotel);//2.准备DSlrequest.source().suggest(new SuggestBuilder().addSuggestion(suggestion,SuggestBuilders.completionSuggestion(suggestion).prefix(h).skipDuplicates(true).size(10)));//3.发起请求SearchResponse response client.search(request, RequestOptions.DEFAULT);//4.解析结果Suggest suggest response.getSuggest();//4.1根据补全查询名称获取补全结果CompletionSuggestion suggestions suggest.getSuggestion(suggestion);//4.2获取optionsListCompletionSuggestion.Entry.Option options suggestions.getOptions();//4.3遍历for (CompletionSuggestion.Entry.Option option : options) {String text option.getText().toString();System.out.println(text);}} 实现搜索框自动补全 Controller中 GetMapping(suggestion)public ListStringgetSuggestion(RequestParam(key)String prefix){return hotelService.getSuggestions(prefix);} Service中 Overridepublic ListString getSuggestions(String prefix) {try {//1.准备requestSearchRequest request new SearchRequest(hotel);//2.准备DSlrequest.source().suggest(new SuggestBuilder().addSuggestion(suggestion,SuggestBuilders.completionSuggestion(suggestion).prefix(prefix).skipDuplicates(true).size(10)));//3.发起请求SearchResponse response client.search(request, RequestOptions.DEFAULT);//4.解析结果Suggest suggest response.getSuggest();//4.1根据补全查询名称获取补全结果CompletionSuggestion suggestions suggest.getSuggestion(suggestion);//4.2获取optionsListCompletionSuggestion.Entry.Option options suggestions.getOptions();//4.3遍历ListStringlistnew ArrayList(options.size());for (CompletionSuggestion.Entry.Option option : options) {String text option.getText().toString();list.add(text);}return list;} catch (IOException e) {throw new RuntimeException(e);}} 效果演示 成功根据提示进行查询
http://www.pierceye.com/news/88960/

相关文章:

  • 网时代it培训官网东莞搜索seo关键词
  • 网站建设 淘宝详情谢家华做网站
  • 网站开发员需要什么素质百度信息流是什么
  • 网站开发说明书模板wordpress 优化配置
  • 新建网站建设海文考研培训班2023价格表
  • h5网站开发工具有哪些慢慢网站建设
  • 《网站开发实训》实验报告孔宇seo
  • 沈阳快速网站建设网站开发爱站网排行榜
  • 济南建设网站哪里好使用循环视频做背景的网站
  • 网站优化柳州公司建的站加油违法吗
  • 可以做h5网站百度信息流推广和搜索推广
  • 企业网站模板 讲湖南岚鸿公司制作个网站
  • 网页设计网站规划报告黄骅市企业名录
  • 哈佛门户网站建设特点c 做网站需要什么知识
  • wordpress主题加载很慢岳阳seo招聘
  • 网站建设工作室wp主题模板wordpress 自动推送
  • 怎么制造网站在wordpress 需要购买服务器吗
  • 投诉做网站的电话手机建站免费
  • 微信公众号的模板网站软装设计师培训
  • 松江网站建设博客管理者的七项基本能力
  • 永清县建设局 网站推广平台怎么赚钱
  • 做网站卖仿品电商前期投资要多少钱
  • 网站建设管理条例天蝎网站建设
  • 教学设计的网站网站维护案
  • 做网站现在赚钱吗redis缓存wordpress
  • 天津网站建设费用网站建设的扩展阶段包括
  • 骏域网站建设专家东莞河南建设监理协会网站电话
  • 百度网站检测怎么做让自己的网站
  • 查网站 备案信息淄博 网站运营
  • 网站后台用什么语言合适商业网站成功的原因