使用mongo-spring数据在textcriteria查询中定义最低分数

lztngnrs  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(374)

我有一个动态查询,它依赖于文本索引和其他字段。我希望能够指定一个最低分数,这样在查询中就不会返回低于最低分数的内容,因为文本匹配与我们要包含的结果还不够接近。
我尝试了以下方法,但是查询没有返回我所期望的结果,而是什么也不返回。

Query dynamicQuery = new Query().with(pageable);
        if(includeSearch){
            TextCriteria textCriteria = TextCriteria.forDefaultLanguage().matchingAny(search.trim());
            Criteria minScoreCriteria = Criteria.where("score").gte(2.0);
            dynamicQuery.addCriteria(textCriteria);
            dynamicQuery.addCriteria(minScoreCriteria);
        }

        if(includeSomethingElse){
            Criteria genreCriteria = Criteria.where("somethingelse").in(list);
            dynamicQuery.addCriteria(genreCriteria);
        }

        if(includeAnotherThing){
            Criteria bpmCriteria = Criteria.where("anotherThing").gte(range[0]).lte(range[1]);
            dynamicQuery.addCriteria(bpmCriteria);
        }

        List<MyClass> vos = mongoTemplate.find(dynamicQuery, MyClass.class, "collection_name");
dpiehjr4

dpiehjr41#

文本分数( { $meta: "textScore" } )只能用于常规查询中的投影和排序。因此,查询与任何文档都不匹配。
有关更多详细信息,请参阅:文本分数元数据
请使用 Aggregation 按照mongodb参考文档中的描述过滤分数。

相关问题