当前位置: 首页 > 知识库问答 >
问题:

mongodb的querydsl支持$text(全文)搜索吗?(使用querydsl和spring data mongodb)

淳于升
2023-03-14

我使用querydsl来构造动态搜索查询(并使用spring data mongodb API来执行它)。是否有一种方法可以构造支持$text(全文)搜索的querydsl查询?

共有1个答案

柳镜
2023-03-14

这是一个古老的问题,但如果将来有人碰到这个问题,我可以将MongoDB全文搜索封装在Querydsl谓词中,如下所示:

import com.querydsl.core.types.ExpressionUtils;
import com.querydsl.core.types.dsl.Expressions;

public static Predicate toTextPredicate(final TextCriteria criteria) {
    final var path = ExpressionUtils.path(Document.class, "$text");
    final var value = Expressions.constant(criteria.getCriteriaObject().get("$text"));
    return ExpressionUtils.predicate(Ops.EQ, path, value);
}

一旦有了谓词,就可以通过BooleanBuilder等将其与任何其他搜索词组合起来。组装Spring数据MongoDBTextCriterie留给读者作为练习。它在其他地方有很好的记录。

通过手动构造MongoDB$text约束文档,您可以在没有Spring Data MongoDB的情况下完成同样的操作。

 类似资料: