摘要:一使用进行匹配的时候匹配的时候,如果想尽可能的多检索结果,考虑使用如果想尽可能精确的匹配分词结果,考虑使用如果短语匹配的时候,怕遗漏,考虑使用。
一、使用match进行匹配的时候:
1.匹配的时候,如果想尽可能的多检索结果,考虑使用match;
2.如果想尽可能精确的匹配分词结果,考虑使用match_phrase;
3.如果短语匹配的时候,怕遗漏,考虑使用match_phrase_prefix。
private static void addKeywordSearchQuery(String keyWordStr,BoolQueryBuilder boolQueryBuilder){ String[] keywords = keyWordStr.split("|"); //这里注意must必须为平级,否则会合并 BoolQueryBuilder shouldBool = QueryBuilders.boolQuery(); for (int i = 0; i < keywords.length; i++) { if (StringUtils.isNotEmpty(keywords[i])) { String[] split = keywords[i].split("+| "); if (split.length>1){ BoolQueryBuilder contetnQuery = QueryBuilders.boolQuery(); BoolQueryBuilder titleQuery = QueryBuilders.boolQuery(); for (int j = 0; j < split.length; j++) { if (!StringUtils.isEmpty(split[j])){ contetnQuery.must(QueryBuilders.matchPhrasePrefixQuery("content",split[j])); titleQuery.must(QueryBuilders.matchPhrasePrefixQuery("title",split[j])); } } shouldBool.should(QueryBuilders.boolQuery().should(contetnQuery).should(titleQuery)); }else { BoolQueryBuilder contentShould = QueryBuilders.boolQuery(); contentShould.should(QueryBuilders.matchPhrasePrefixQuery("content", keywords[i])); contentShould.should(QueryBuilders.matchPhrasePrefixQuery("title", keywords[i])); shouldBool.should(contentShould); } } } boolQueryBuilder.must( QueryBuilders.boolQuery().must(shouldBool)); }四、可以使用range来确定范围,时间上比较常用:
boolQueryBuilder.must(QueryBuilders.rangeQuery("infotime").gte(opinionSearchBean.getStartTime().getTime()) .lte(opinionSearchBean.getEndTime().getTime()));五、对id进行过滤
boolQueryBuilder.filter(QueryBuilders.idsQuery().types("opiniondata") .addIds(opinionids.toArray(new String[opinionids.size()])));六、对某个值进行排序的时候,如果没有设置默认值,则这个值初始化是null,这时候排序则部分生效,如果需要对某个值进行排序的时候,需要进行初始值设置即可。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/69387.html
摘要:另外集群也没有做物理隔离,有一次促销活动就因为粉丝数据量过于庞大导致进程内存耗尽而,使得集群内全部索引都无法正常工作,这给我上了深深的一课。 有赞搜索平台是一个面向公司内部各项搜索应用以及部分 NoSQL 存储应用的 PaaS 产品,帮助应用合理高效的支持检索和多维过滤功能,有赞搜索平台目前支持了大大小小一百多个检索业务,服务于近百亿数据。 在为传统的搜索应用提供高级检索和大数据交互能...
摘要:基本概念在深入解读之前,先了解下的几个基本概念,以及这几个概念背后隐藏的一些东西。如图是一个内的基本组成,内数据只是一个抽象表示,不代表其内部真实数据结构。即词典,是根据条件查找的基本索引。 前言 Apache Lucene是一个开源的高性能、可扩展的信息检索引擎,提供了强大的数据检索能力。Lucene已经发展了很多年,其功能越来越强大,架构也越来越精细。它目前不仅仅能支持全文索引,也...
摘要:基本概念在深入解读之前,先了解下的几个基本概念,以及这几个概念背后隐藏的一些东西。如图是一个内的基本组成,内数据只是一个抽象表示,不代表其内部真实数据结构。即词典,是根据条件查找的基本索引。 前言 Apache Lucene是一个开源的高性能、可扩展的信息检索引擎,提供了强大的数据检索能力。Lucene已经发展了很多年,其功能越来越强大,架构也越来越精细。它目前不仅仅能支持全文索引,也...
阅读 2990·2021-09-28 09:43
阅读 818·2021-09-08 09:35
阅读 1349·2019-08-30 15:56
阅读 1090·2019-08-30 13:00
阅读 2636·2019-08-29 18:35
阅读 1746·2019-08-29 14:07
阅读 3356·2019-08-29 13:13
阅读 1232·2019-08-29 12:40