首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >利用TSVECTOR和to_tsquery对续集中的记录进行过滤

利用TSVECTOR和to_tsquery对续集中的记录进行过滤
EN

Stack Overflow用户
提问于 2022-04-10 11:23:28
回答 1查看 392关注 0票数 1

有一段时间以来,我一直试图获得完整的搜索文本,但没有取得任何成功。当前的文档有以下示例:

代码语言:javascript
运行
复制
[Op.match]: Sequelize.fn('to_tsquery', 'fat & rat') // match text search for strings 'fat' and 'rat' (PG only)

因此,我构建了以下查询:

代码语言:javascript
运行
复制
Title.findAll({
      where: {
        keywords: {
          [Op.match]: Sequelize.fn('to_tsquery', 'test')
        }
      }
    })

关键字定义为TSVECTOR字段。

代码语言:javascript
运行
复制
keywords: {
      type: DataTypes.TSVECTOR,
    },

它似乎正确地生成了查询,但我没有得到预期的结果。这是通过Sequelize生成的查询:

代码语言:javascript
运行
复制
Executing (default): SELECT "id" FROM "Tests" AS "Test" WHERE "Test"."keywords" @@ to_tsquery('test');

我知道数据库中有多条记录在其向量中有“test”,例如:

代码语言:javascript
运行
复制
{
        "id": 3,
        "keywords": "'keyword' 'this' 'test' 'is' 'a'",
    }

所以我不确定到底发生了什么。基于TSVECTOR字段搜索匹配的正确方法是什么?

EN

Stack Overflow用户

发布于 2022-04-12 19:23:46

这很有趣,但这些天我也在做同样的事情,也遇到了同样的问题。

我认为解决方案的一部分就在这里(How to implement PostgresQL tsvector for full-text search using Sequelize?),但我还没能让它开始工作。

如果你找到例子,我很感兴趣。否则,一旦我找到有效的解决方案100%,我将更新这个答案。

我还注意到,当我从后缀中添加数据(种子)时,它不会在相关字段的数据之后添加词号。你也有同样的行为吗?

最后一件事,你创建索引了吗?

代码语言:javascript
运行
复制
CREATE INDEX tsv_idx ON data USING gin(column);
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71816110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档