下拉神器是一款专业的下拉词平台,提供各种下拉功能:百度下拉丶360搜索下拉丶必应搜索下拉丶哔哩哔哩下拉丶抖音下拉等等,里面还有批量做词教程技术,可以一次性做10-50个词,省心高效!批量做词,批量出词,可以实现霸屏效果!
有的客户想删除下拉,但是百度不受理,就可以使用批量做词霸屏技术,实现把那些负面信息顶下去,顶掉的效果=删除效果!欢迎您前来使用!新手不懂使用,请多看2遍视频教程哦!下拉神器100%有效果的!
给大家看一个下拉神器介绍的视频,看完后,点击下面的按钮进入”下拉神器“
欢迎使用下拉神器,下拉行业老品牌,如果下拉神器都不好使,整个行业其他平台一样不好使,但是大家一定要多学习多看教程,先学会做词出词的技巧!
下一篇文章内容预览:
目录
1. 概述
(1)它是什么?
它的核心是一个分布式搜索和分析引擎。
它可以算是目前为止最先进、性能最好、最全面的搜索引擎库。但它只是一个基于 Java 的库。您需要使用 Java 并将其集成到您的应用程序中才能使用它。它是一个在 .
基于分布式实时文件存储,各个字段都有索引可搜索,并可实时分析,同时由于基于分布式,可以扩展到几百台服务器,处理PB级别的结构化或非结构化数据。
(2)核心概念:
可以归类为以下其中一种,主要有()、type(类型,7.x之后废弃)、()、()。
类比如下:
其实现的核心在于倒排索引:即以文档内容中的词作为索引,以包含该词的文档ID作为记录。
在一般的SQL中关键词搜索引擎工具,索引都是正序的,也就是以表内唯一标识id作为索引,通过主键索引找到文档其他内容(具体请参考存储结构)。
通过以关键词为索引,反向找到文档ID,可以高效的实现全文检索。
例如我们有以下两条记录:

ID
这是一个测试数据。
这是第二个,测试数据,尝试搜索
上面两条数据中,id是主键,当我们使用关键字搜索查找所有相关数据时,如果没有建索引,则无法使用主键索引,会进行全表搜索,一般效率较高。
中间会建立一个倒排索引,按照对应的ID返回搜索结果,效率较高。另外整个搜索过程我们不需要对文本做任何模糊匹配。
(3)应用场景:
作为一个简单易用的分布式全文搜索引擎,它常用于各种搜索场景:
总之,是一款优秀的搜索工具,可以快速搜索各类内容并返回结果:
(搜索关键词并突出显示)
一般我们会把需要搜索的字段存为索引,将需要返回的数据(比如电商平台的商品标题)存入数据库,然后在搜索的时候使用全文搜索来快速返回相关结果。
3. 集成
下面演示了集成:

pom依赖文件:
1.8 7.6.1 com.alibaba fastjson 1.2.70 org.springframework.boot spring-boot-starter-data-elasticsearch org.springframework.boot spring-boot-starter-web org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test
这里需要注意的是内置版本是6.8.5,如果使用其他版本请注明版本号。
配置文件,连接:
@Configuration public class ElasticSearchConfig { @Bean public RestHighLevelClient restHighLevelClient(){ RestHighLevelClient client = new RestHighLevelClient( RestClient.builder( new HttpHost("127.0.0.1",9200,"http") ) ); return client; } }
至此,我们都可以使用它了。
4. 实现搜索并突出显示关键词
接下来用它来查询并高亮关键词。
首先,我们创建一个索引:user,并存储以下数据:
然后我们在业务类中编写查询方法:
//查询 public List searchUserByKeyword(String keyword,int pageNo,int pageSize) throws IOException { if (pageNo<=1){ pageNo=1; } //条件查询 SearchRequest searchRequest = new SearchRequest("user"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //分页 searchSourceBuilder.from(pageNo); searchSourceBuilder.size(pageSize); //匹配关键词(类似于模糊查询) //MatchQueryBuilder queryBuilder = QueryBuilders.matchQuery("sign",keyword); //组合查询 BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery(); //and查询,所有条件都要符合; or查询可以使用queryBuilder.should queryBuilder.must(QueryBuilders.matchQuery("sign",keyword)); queryBuilder.must(QueryBuilders.matchQuery("statue","use")); //精确匹配 //TermQueryBuilder queryBuilder = QueryBuilders.termQuery("sign",keyword); searchSourceBuilder.query(queryBuilder); //设置高亮 //highlightBuilder.requireFieldMatch(false); //只需要高亮第一个 searchSourceBuilder.highlighter(new HighlightBuilder().field("sign")); //执行 searchRequest.source(searchSourceBuilder); SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); //解析结果 List list = new ArrayList<>(); for (SearchHit hit: response.getHits().getHits()){ //解析高亮字段 Map highlightFields = hit.getHighlightFields(); HighlightField sign = highlightFields.get("sign"); //获取原字段 Map oldUser = hit.getSourceAsMap(); //将高亮替换原字段内容 StringBuilder stringBuilder = new StringBuilder(); if (sign!=null){ Text[] texts = sign.fragments(); for (Text t:texts){ stringBuilder.append(t); } log.info("替换:"+stringBuilder); oldUser.put("sign",stringBuilder.toString()); } User user = JSONObject.parseObject(hit.getSourceAsString(),User.class); user.setSign(oldUser.get("sign").toString()); list.add(user); } return list; }
配置的是拆分字符匹配,即如果关键字为“test”,那么会查询目标字段包含“test”和“test”中任意一个字符的结果;如果是“java”,则不会拆分字母,保持整个单词完整。

需要注意的是,高亮的字段必须是查询的字段,才能高亮显示查询关键字,否则高亮的字段为空。
写一个测试:
@RestController public class SearchController { @Resource private SearchService searchService; @GetMapping("/test") public List test(@RequestParam("keyword")String keyword) throws IOException { return searchService.searchUserByKeyword(keyword,0,5); } }
结果:
成功搜索出所有标识包含java关键字且被使用的用户,并高亮显示java关键字(em标签,需要使用html进行解析)。
扩张:
(1)您还可以对搜索结果进行排序:
searchSourceBuilder.sort("age");
上述代码按照年龄字段对搜索结果进行排序。
(2)过滤查询条件:
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery(); //过滤statue!=use的数据 queryBuilder.filter(QueryBuilders.matchPhraseQuery("statue","use")); //过滤age不大于20的数据 queryBuilder.filter(QueryBuilders.rangeQuery("age").gt(20));
查询条件还有很多,具体请参考官网文档。