三条记录:
1.进口红酒
2.口红
3.口红1号
当我搜索口红的时候,怎么把 进口红酒 排除,或者排名靠后?现在三个score 都是一样的。。。
求大神给个思路
三条记录:
1.进口红酒
2.口红
3.口红1号
当我搜索口红的时候,怎么把 进口红酒 排除,或者排名靠后?现在三个score 都是一样的。。。
求大神给个思路
DisMaxQueryBuilder disMaxQueryBuilder = QueryBuilders.disMaxQuery();
//名称去特殊符号
disMaxQueryBuilder.add(QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("title_lower_en", keyword)).boost(17.8f));
disMaxQueryBuilder.add(QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("title_lower_cn", keyword)).boost(17.8f));
disMaxQueryBuilder.add(QueryBuilders.constantScoreQuery(QueryBuilders.prefixQuery("title_lower_en", keyword)).boost(17.5f));
disMaxQueryBuilder.add(QueryBuilders.constantScoreQuery(QueryBuilders.prefixQuery("title_lower_cn", keyword)).boost(17.5f));
disMaxQueryBuilder.add(QueryBuilders.constantScoreQuery(QueryBuilders.wildcardQuery("title_lower_en", StrUtil.concat(true, "*", keyword, "*"))).boost(17));
disMaxQueryBuilder.add(QueryBuilders.constantScoreQuery(QueryBuilders.wildcardQuery("title_lower_cn", StrUtil.concat(true, "*", keyword, "*"))).boost(17));
esQuery.boolQueryBuilder(disMaxQueryBuilder);
esQuery.orderByDesc("_score");
根据完全匹配 前缀匹配 模糊匹配 评分设置依次从高到底,按照得分倒排 也许可以解决你的问题