使用Mongo-Spring数据在TextCriteria查询中定义最小分数



我有一个动态查询,它依赖于文本索引和其他字段。我希望能够指定一个最低分数,这样就不会从查询中返回低于最低分数的内容,因为文本匹配与我们想要包含的结果不太接近。

我已经尝试了以下操作,但查询并没有返回我所期望的内容,而是一无所获。

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");

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

请使用Aggregation过滤分数,如MongoDB参考文档中所述。

最新更新