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

拍拍网站开发做游戏网站

拍拍网站开发,做游戏网站,宿迁沭阳网站建设,交易所开发深圳网站制作由于es高亮显示机制的问题。当全文内容过多,且搜索中标又少时,就会出现高亮结果无法覆盖全文。因此需要根据需求手动替换。 1.根据es的ik分词器获取搜索词的分词结果。 es部分: //中文分词解析 post /_analyze {"analyzer":"…

由于es高亮显示机制的问题。当全文内容过多,且搜索中标又少时,就会出现高亮结果无法覆盖全文。因此需要根据需求手动替换。
1.根据es的ik分词器获取搜索词的分词结果。
es部分:

//中文分词解析
post /_analyze
{"analyzer":"ik_smart","text":"谷歌浏览器"
}//结果
{"tokens": [{"token": "谷歌","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 0},{"token": "浏览器","start_offset": 2,"end_offset": 5,"type": "CN_WORD","position": 1}]
}

注意:ik_smart 是最粗颗粒度,不会有重复分词。ik_max_word 是最细颗粒度,会有重复分词。高亮显示只需要最粗即可。
ik_smart:
在这里插入图片描述
ik_max_word:
在这里插入图片描述

将es的语句转为Java语句:

//主要使用的包
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.elasticsearch.client.Request;
import org.elasticsearch.client.Response;
import org.elasticsearch.client.RestHighLevelClient;@Resourceprivate RestHighLevelClient restHighLevelClient;/*** 获取到es的分词结果** @param searchContent 查询关键字* @return 分词结果*/private List<String> getAnalyze(String searchContent) {List<String> tokens = new ArrayList<>();if (StringUtils.isNotEmpty(searchContent)) {String endpoint = "/_analyze";String body = "{\n" +"  \"analyzer\": \"ik_smart\",\n" +"  \"text\": \"" + searchContent + "\"\n" +"}";try {Request request = new Request("POST", endpoint);request.setJsonEntity(body);Response response = restHighLevelClient.getLowLevelClient().performRequest(request);InputStream content = response.getEntity().getContent();JsonNode jsonNode = objectMapper.readTree(content);if (jsonNode.has("tokens")) {for (JsonNode token : jsonNode.get("tokens")) {tokens.add(token.get("token").asText());}}} catch (IOException | UnsupportedOperationException e) {log.error("ES查询分词异常", e);}}return tokens;}

2.根据获取到的多个分词数据。替换全文内容。

    /*** 根据多个需要替换的字符,高效替换全文数据* @param replaceStrList 替换字符* @param content 全文* @return 高亮显示的全文*/private String replaceHighlight(List<String> replaceStrList, String content) {StringBuffer result = new StringBuffer();try {Map<String, String> replacements = new HashMap<>();for (String replaceStr : replaceStrList) {replacements.put(replaceStr, "<font class='eslight'>" + replaceStr + "</font>");}Pattern pattern = Pattern.compile(String.join("|", replacements.keySet()));Matcher matcher = pattern.matcher(content);while (matcher.find()) {matcher.appendReplacement(result, replacements.get(matcher.group(0)));}matcher.appendTail(result);} catch (Exception e) {log.error("替换高亮显示异常", e);}return result.toString();}

此时就能将全文关键词以分词的效果高亮显示了。

http://www.yayakq.cn/news/7852/

相关文章:

  • 怎么做网站访问被拒绝上海天华室内设计有限公司
  • 导航网站备案马鞍山网站建设 明达
  • 百度seo软件seo关键词分类
  • 北京h5网站制作帝国cms仿站工具
  • 技术支持 广州网站建设国内好的网站建设
  • 整站优化seo公司哪家好wordpress menu代码
  • 淘宝内部优惠券放到网站上做2345网址导航是谷歌吗
  • 深圳 网站设计浦东新区苏州网站建设
  • 建立网站图片做公众号时图片的网站
  • 个人网站免费空间申请html5网站开发需要框架吗
  • 做毕业设计资料网站信息流广告投放平台有哪些
  • 215做网站基本网站建设知识
  • 教你做网站wordpress sso插件开发
  • 带数据库网站模板微信平台制作网站开发
  • 微商怎么找客源人脉西宁整站优化
  • 做网站推广的前期条件wordpress图表模板类
  • 哪里有好网站设计江宁做网站价格
  • 化妆品公司网站建设方案网站建设有哪些规章制度
  • 营销型网站建设技术指标wordpress模板yunnut
  • 要怎么网站做推广网站建设连接到百度
  • 茂名seo网站建设沂南网站开发
  • 如何做一个网站设计免费域名注册网
  • 西安做企业网站哪个网站可预约做头发
  • 昆明网站建设的公司大型网页游戏有哪些
  • 建设网站要备案吗上海企业网站开发
  • 宁波制作网站知名东莞免费企业网站建设
  • 网站开发德菁祥云网站推广
  • 教育机构网站建设公司网站多少页面合适
  • 深圳学校网站定制设计国内ip地址 免费
  • 网站栏目结构设计市场体系建设司在官方网站