【问题标题】:how to add @ to postgres hibernate dialect?如何将@添加到postgres休眠方言?
【发布时间】:2013-07-26 05:11:29
【问题描述】:

我们有一个用于全文搜索的原生查询,它使用如下 GIN 索引:

CREATE INDEX idx_column1 ON table1 USING gin (to_tsvector('english', column1));

SELECT *
FROM table1
where to_tsvector('english', column1) @@ to_tsquery('searchedText')

但是,我们无法在 HQL 中复制此查询,因为符号 @ 上出现休眠错误。 如何在hibernate方言中添加符号@?

【问题讨论】:

  • Hibernate 的人似乎认为这样做很奇怪(“不可移植”、“只使用 Hibernate Search”等),因此很难获得信息。
  • 希望这篇文章对你有所帮助-java-talks.blogspot.com/2014/04/…

标签: hibernate postgresql full-text-search hql


【解决方案1】:

您可以在this link 中找到它,该链接将引导您:

  • 认识到 SQLFunctions 必须返回一个值,并且在使用时 HQL 必须采用表达式形式(例如,fts(body, 'dog') = true -- fts(body, 'dog') 在 HQL 中不起作用)
  • 为 PG FTS 创建 Hibernate SQLFunction;和
  • 记住表达式“to_tsvector(body) @@ to_tsquery('dog')” 评估为布尔值

【讨论】:

  • 谢谢。这条线索“(例如,fts(body, 'dog') = true -- fts(body, 'dog') won't work in HQL)”确实对我有帮助。
猜你喜欢
  • 2022-11-27
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多