小编use*_*020的帖子

使用 Postgresql 和 hibernate 进行全文搜索 - tsvector 和运算符 @@ 缺少类型

我有 postgresql 数据库,我想在其中使用 JPA/Hibernate 标准 API 运行全文搜索查询。我的问题是我不知道应该使用哪种类型作为 tsvector 类型以及 @@ 运算符的替代品是什么?

我创建了一个数据库视图,它组合了两个表中的数据并创建了一个连接的 tsvector:

CREATE OR REPLACE VIEW node_name_description_tags AS
    SELECT nodeId, document
    FROM (SELECT node.id as nodeId,
                 to_tsvector('english', node.name) || 
                 to_tsvector('english', coalesce(node.description, ' ')) ||
                 to_tsvector('english', coalesce(string_agg(tag.name, ' '), ' '))  as document
          FROM node
          JOIN tag_node ON node.id = tag_node.node_id
          JOIN tag ON tag.id = tag_node.tag_id
          GROUP BY nodeId) as documents                  
Run Code Online (Sandbox Code Playgroud)

然后我可以像这样对其运行查询,它会返回我期望的结果:

SELECT * FROM node_name_description_tags WHERE document @@ PLAINTO_TSQUERY('english', 'integration user administration file')
Run Code Online (Sandbox Code Playgroud)

我接下来要做的 - 创建映射到此视图的休眠实体,但我不知道列 tsvector 使用哪种类型。然后我打算用where子句创建一个hibernate规范,但我不知道operator …

postgresql full-text-search hibernate criteria-api

5
推荐指数
1
解决办法
2822
查看次数