有一段时间以来,我一直试图获得完整的搜索文本,但没有取得任何成功。当前的文档有以下示例:
[Op.match]: Sequelize.fn('to_tsquery', 'fat & rat') // match text search for strings 'fat' and 'rat' (PG only)因此,我构建了以下查询:
Title.findAll({
where: {
keywords: {
[Op.match]: Sequelize.fn('to_tsquery', 'test')
}
}
})关键字定义为TSVECTOR字段。
keywords: {
type: DataTypes.TSVECTOR,
},它似乎正确地生成了查询,但我没有得到预期的结果。这是通过Sequelize生成的查询:
Executing (default): SELECT "id" FROM "Tests" AS "Test" WHERE "Test"."keywords" @@ to_tsquery('test');我知道数据库中有多条记录在其向量中有“test”,例如:
{
"id": 3,
"keywords": "'keyword' 'this' 'test' 'is' 'a'",
}所以我不确定到底发生了什么。基于TSVECTOR字段搜索匹配的正确方法是什么?
发布于 2022-04-12 19:23:46
这很有趣,但这些天我也在做同样的事情,也遇到了同样的问题。
我认为解决方案的一部分就在这里(How to implement PostgresQL tsvector for full-text search using Sequelize?),但我还没能让它开始工作。
如果你找到例子,我很感兴趣。否则,一旦我找到有效的解决方案100%,我将更新这个答案。
我还注意到,当我从后缀中添加数据(种子)时,它不会在相关字段的数据之后添加词号。你也有同样的行为吗?
最后一件事,你创建索引了吗?
CREATE INDEX tsv_idx ON data USING gin(column);https://stackoverflow.com/questions/71816110
复制相似问题