我使用querydsl来构造动态搜索查询(并使用spring data mongodb API来执行它)。是否有一种方法可以构造支持$text(全文)搜索的querydsl查询?
这是一个古老的问题,但如果将来有人碰到这个问题,我可以将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的情况下完成同样的操作。
我想使用具有QueryDSL支持的Spring Data JDBC。根据Spring留档(https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#core.extensions.querydsl),它是受支持的,但我无法使其工作。 我使用MariaDB作为数据库,我的SpringBoot版本是2.6.0。 我对pom
按照官方文档,在我的Spring配置中添加注释允许在查询中自动插入类: 然后我可以在执行GET请求时轻松地进行搜索: null 是否可以在查询中直接使用此运算符? (如果有关系的话,我使用的是Spring Data Mongodb)
带有Mongoose的MongoDB(3.2.0) 收藏: 用户 null 查询: =>找到 =>找到(搜索大小写敏感为false) =>找到(使用diacriticSensitive搜索为false) =>找到(部分搜索) =>未找到(部分搜索) =>未找到(部分搜索) 你知道为什么我用查询“Leo”或“L”得到0个结果吗? null
null 类似于REST查询DSL 用于全文和结构化搜索的查询语言