Lzq_1010 2020-12-11 16:52 采纳率: 0%
浏览 700

es中搜索结果不准确怎么办

三条记录:

1.进口红酒

2.口红

3.口红1号

 

当我搜索口红的时候,怎么把 进口红酒 排除,或者排名靠后?现在三个score 都是一样的。。。

求大神给个思路

  • 写回答

2条回答 默认 最新

  • 唐三水 2020-12-11 17:32
    关注
    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");

    根据完全匹配 前缀匹配   模糊匹配 评分设置依次从高到底,按照得分倒排 也许可以解决你的问题

    评论

报告相同问题?