网站建设案例公司,酒类招商网站大全,自动做微网站,编写网页的软件个人名片#xff1a; 博主#xff1a;酒徒ᝰ. 个人简介#xff1a;沉醉在酒中#xff0c;借着一股酒劲#xff0c;去拼搏一个未来。 本篇励志#xff1a;三人行#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》#xff0c;SpringCloud… 个人名片 博主酒徒ᝰ. 个人简介沉醉在酒中借着一股酒劲去拼搏一个未来。 本篇励志三人行必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》SpringCloudRabbitMQDockerRedis搜索分布式 【SpringCloudRabbitMQDockerRedis搜索分布式系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看 目录 四、黑马旅游案例5. 高亮 四、黑马旅游案例 Elasticsearch的高亮Highlight是搜索结果中高亮显示匹配关键词或短语的位置。 高亮的主要作用是突出显示搜索结果中与查询关键词或短语匹配的部分以便用户可以更快速、准确地找到所需内容。高亮还可以帮助搜索引擎理解查询意图提高搜索的准确性和效率。 Elasticsearch的高亮优势有以下几点 高亮方式在处理大字段时有较大优势占用空间较小。高亮方式在实时分词速度小于磁盘读随机取速度时具有明显优势。高亮方式可以支持多段高亮。高亮方式可以自定义标签和样式。高亮方式可以设置高亮位置。 5. 高亮 在Elasticsearch中可以使用高亮功能对搜索结果进行高亮显示以突出匹配的关键词或短语。下面是一些关于Elasticsearch中高亮处理的介绍 高亮字段 高亮字段是在搜索结果中高亮显示匹配关键词或短语的位置。可以通过在查询中指定高亮字段来实现。 高亮标识 高亮标识用于指定高亮字段的前缀和后缀以标识匹配的关键词或短语。可以通过在查询中的highlight参数中指定pre_tags和post_tags来实现。 我们使用 em标签作为高亮标识的前缀使用 /em标签作为高亮标识的后缀。查询结果将使用这些标签对匹配字段进行高亮显示。 高亮排序 高亮排序用于指定高亮字段在搜索结果中的排序方式。可以通过在查询中的highlight参数中指定order来实现。使用score作为高亮排序方式即按照与关键词的匹配程度对高亮字段进行排序。Elasticsearch默认使用score作为排序方式。 除了上述高亮处理的功能外Elasticsearch还提供了其他高级的高亮功能例如多段高亮、高亮片段、高亮聚合等。 修改buildBasicQuery
private void buildBasicQuery(RequestParams params, SearchRequest request) {BoolQueryBuilder boolQuery QueryBuilders.boolQuery();String key params.getKey();if (key null || .equals(key)) {boolQuery.must(QueryBuilders.matchAllQuery());}else {boolQuery.must(QueryBuilders.matchQuery(all, key));}String city params.getCity();if (city ! null !.equals(city)){boolQuery.filter(QueryBuilders.termQuery(city, city));}String brand params.getBrand();if (brand ! null !.equals(brand)){boolQuery.filter(QueryBuilders.termQuery(brand, brand));}String starName params.getStarName();if (starName ! null !.equals(starName)){boolQuery.filter(QueryBuilders.termQuery(starName, starName));}Integer maxPrice params.getMaxPrice();Integer minPrice params.getMinPrice();if (maxPrice ! null minPrice ! null) {boolQuery.filter(QueryBuilders.rangeQuery(price).gte(minPrice).lte(maxPrice));}String location params.getLocation();if (location ! null !.equals(location)){request.source().sort(SortBuilders.geoDistanceSort(location, new GeoPoint(location)).order(SortOrder.ASC).unit(DistanceUnit.KILOMETERS));}String sortBy params.getSortBy();if (sortBy.equals(score)){request.source().sort(sortBy, SortOrder.DESC);}else if (sortBy.equals(price)){request.source().sort(sortBy, SortOrder.ASC);}FunctionScoreQueryBuilder functionScoreQuery QueryBuilders.functionScoreQuery(boolQuery,new FunctionScoreQueryBuilder.FilterFunctionBuilder[]{new FunctionScoreQueryBuilder.FilterFunctionBuilder(QueryBuilders.termQuery(isAD, true),ScoreFunctionBuilders.weightFactorFunction(10))});request.source().query(functionScoreQuery);int page params.getPage(), size params.getSize();request.source().from((page-1)*page).size(size);request.source().highlighter(new HighlightBuilder().field(name).requireFieldMatch(false));
}总结 Elasticsearch高亮功能详解原理、应用与优化 一、高亮功能简介 在Elasticsearch中高亮功能是一种用于突出显示搜索结果中关键词或短语位置的方法。通过高亮用户可以快速识别文档中与搜索查询相关的内容提高搜索效率和准确性。高亮功能还能帮助搜索引擎理解用户查询意图从而为用户提供更相关的搜索结果。 二、高亮原理与实现 高亮功能在Elasticsearch中通过高亮查询Highlight Query实现。高亮查询会在搜索过程中对匹配的词进行高亮显示并允许用户自定义高亮标签和样式。 query部分指定了搜索的查询语句highlight部分则指定了高亮相关设置。通过设置pre_tags和post_tags来定义高亮标签使用fragment_size来指定片段大小。 三、高亮功能应用场景 高亮功能在Elasticsearch中有广泛的应用场景。以下是几个常见的应用场景 商品搜索在电商平台上用户搜索商品时高亮功能可以帮助用户快速找到与搜索关键词匹配的商品提高用户体验。 文档搜索在企业内部文档搜索中高亮功能能够突出显示与搜索关键词相关的文档段落方便用户快速定位关键信息。 代码搜索在代码搜索中高亮功能可以将搜索关键词所在的代码片段高亮显示帮助开发者更快地找到所需代码。 四、高亮功能优化 虽然高亮功能在Elasticsearch中已经非常强大但在实际应用中可能还需要针对特定场景进行优化。以下是一些常见的优化方法 精确匹配与模糊匹配在设置高亮查询时可以根据需要使用精确匹配或模糊匹配。精确匹配更准确但可能忽略某些相关内容模糊匹配则可以匹配更多内容但可能存在一定误差。 高亮位置自定义可以自定义高亮位置例如仅高亮关键词所在句子或段落以减少高亮结果的干扰。 高亮标签与样式可以自定义高亮标签和样式使其更符合网站或应用程序的主题和风格。 缓存优化对高亮查询结果进行缓存以提高搜索效率。可以考虑使用Elasticsearch缓存机制或自定义缓存实现。 处理大型文本字段当处理大型文本字段时可以调整高亮查询的片段大小以避免消耗过多内存和带宽。 五、高亮功能常见问题与解决方案 在使用高亮功能时可能会遇到一些常见问题。以下是一些问题的解决方案 高亮结果过多或不准确可以尝试调整高亮查询的设置如精确匹配与模糊匹配、高亮标签与样式等以提高高亮结果的准确性和相关性。同时还可以对搜索词进行过滤和去重以避免过多干扰结果。 高亮查询性能问题高亮查询可能会增加搜索时间。可以考虑使用缓存优- 化方法来提高性能如缓存高亮查询结果、使用布隆过滤器等。此外还可以对文本字段进行分词处理以降低高亮查询的复杂度。