如何用hibernate、spring和postgresql实现fts。我可以在休眠状态下设置一些参数吗 @Formula
所以我可以 score
作为额外的选择参数:
select *,
ts_rank_cd(to_tsvector(title || ' ' || code || ' ' || line1 || ' ' || postal || ' ' || city),
to_tsquery('LA | Los Anageles')) AS score
from customer
where score > 0
order by score desc;
如何使用spirng规范,现在我有:
if (!StringUtils.isEmpty(search)) {
spec = Objects.requireNonNull(spec).and((root, query, cb) -> cb.or(
cb.like(cb.lower(root.get(Customer_.title)), "%" + search.toLowerCase() + "%"),
cb.like(cb.lower(root.get(Customer_.code)), "%" + search.toLowerCase() + "%"),
cb.like(cb.lower(root.get(Customer_.address).get(Address_.line1)), search.toLowerCase() + "%"),
cb.like(cb.lower(root.get(Customer_.address).get(Address_.postal)), search.toLowerCase() + "%"),
cb.like(cb.lower(root.get(Customer_.address).get(Address_.city)), search.toLowerCase() + "%")
));
}
我能不能至少使用cb.function而不按分数排序?
1条答案
按热度按时间ego6inou1#
您必须实现一个自定义
SQLFunction
并在hibernate中注册一个名字。然后,您可以通过cb.function
.或者,您还应该能够使用以下功能:
这将产生类似以下内容的sql: