- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个简单的表。首先是品牌,每个品牌可能都有一个顶级品牌。例如,Elseve 有一个顶级品牌,即 Loreal Paris。但雅芳没有顶级品牌。我有一个简单的产品表。
这里是 sqlfiddle
这是品牌表。
id | name | parent_id | depth
----+--------------+-----------+-------
3 | Loreal Paris | null | 0
1 | Avon | null | 1
2 | Elseve | 3 | 1
(3 rows)
这是产品表
id | brand_id | name
----+----------+-----------
1 | 1 | Product 1
2 | 2 | Product 2
(2 rows)
当我尝试获取 tsvectors 时,Product 1 文档返回空结果。但我至少需要在文件中加入雅芳。
product_id | product_name | document
------------+--------------+--------------------------------------------------
1 | Product 1 |
2 | Product 2 | '2':2 'elsev':3 'loreal':4 'paris':5 'product':1
(2 rows)
如何解决这个问题?
感谢 Voa Tsun。我稍微更新了查询。我不再需要分组。
select
products.id as product_id,
products.name as product_name,
to_tsvector(products.name) ||
to_tsvector(brands.name) ||
to_tsvector(top_brands.name)
as document
from products
JOIN brands on brands.id = products.brand_id
LEFT JOIN brands as top_brands on coalesce(brands.parent_id,brands.id) = top_brands.id;
最佳答案
基本思想是在“parent_id”中加入 id 不是针对 null,而是“至少针对 id”,正如我从您的帖子中了解到的那样。像这里:
select
products.id as product_id,
products.name as product_name,
to_tsvector(coalesce(products.name,brands.name)) ||
to_tsvector(brands.name) ||
to_tsvector(coalesce(string_agg(top_brands.name, ' ')))
as document
from products
JOIN brands on brands.id = products.brand_id
LEFT JOIN brands as top_brands on coalesce(brands.parent_id,brands.id) =
top_brands.id
GROUP BY products.id,brands.id;
product_id product_name document
1 1 Product 1 '1':2'avon':3,4'product':1
2 2 Product 2 '2':2'elsev':3'loreal':4'pari':5'product':1
关于sql - 带有关系表的 Postgres tsvector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44285327/
我正在尝试获取给定记录的“可能相关”记录。 表上有一个 tsvector (tsv),所以我在考虑如何将源 tsv 转换为 tsquery 格式,然后像普通排名搜索一样找到最密切相关的匹配项。 SEL
我想在包含所有包含数字的字符串的列上使用 postgres tsquery,如下所示: FRUIT-239476234 如果我尝试从中制作 tsquery: select to_tsquery('FR
所以我的问题是我在表中添加了一个 tsvector 类型的列,但没有将它添加到实体类中,现在当我想运行 doctrine:schema:update --force 时,它给了我这个错误 Unknow
我正在尝试创建一个 PostgreSQL 查询来查找 tsvector 列中的部分文本。 我有一个像这样的 tsvector 值 "'89' 'TT7' 'test123'" 我需要找到包含“%es%
我做了以下事情: ALTER TABLE blog_entry ADD COLUMN body_tsv tsvector; CREATE TRIGGER tsvectorupdate BEFORE I
我一直在寻找一种在 sqlalchemy 中使用 tsvector 的方法(就像 INTEGER 等其他方法一样),但到目前为止我还不清楚如何做到这一点。我读过可以使用 UserDefinedType
我想实现一个使用向量空间模型的信息检索系统,但具有多术语标记和自定义术语加权函数。 我正在考虑在 PostgreSQL 而不是文件系统中构建我的倒排索引。我读到 GIN 索引,它在 tsvector
我只想在 tsvector 中搜索文本中仅有的单词。有没有办法做到这一点?指定一个词必须是最后一个或第一个词怎么样?我使用 tsvector 的原因是我需要匹配词干。 更新:示例数据是一个包含三行的表
我有两个简单的表。首先是品牌,每个品牌可能都有一个顶级品牌。例如,Elseve 有一个顶级品牌,即 Loreal Paris。但雅芳没有顶级品牌。我有一个简单的产品表。 这里是 sqlfiddle 这
我正尝试从几个表中的几个列中提取数据,以使其可进行全文搜索,但我的运气并不好。 这是我的功能: CREATE OR REPLACE FUNCTION on_customer_save_udpate_t
我有以下几行文字: “蓝色药丸”; “红色药丸”; “蓝移”; “红眼”。 我想选择行,其中 Red 是第一个单词,Pill 是第二个单词。假设地,它可以通过使用 tsquery 和 tsvector
我得到了一个包含超过 5000 万条记录的数据库表我需要尽快进行全文搜索。 在一个较小的表上,我只是在文本列上有一个索引,我使用相似性函数来获得相似的结果。我还能够根据 similarity() 的结
EDIT2:我将保留文本的其余部分用于上下文,但我发现问题与我的备份或数据模型无关。我通过以下操作成功地重现了这个问题: createdb -w -T template0 localeTestDb -
我有一个带有文本字段的表和一个包含该字段的搜索索引的 tsvector: CREATE TABLE test (pk bigint, value text, tsv tsvector); 如何创建一个
我(重新)对 tsvector 字段感到困惑。将文本连接到一个 tsvector 字段,然后进行索引的示例非常很常见。如果您查找 PG 12 生成的列,您会发现示例显示 tsvector 字段填充 q
我正在考虑向现有表中添加一个 tsvector 列,该列将包含同一表中多个列的可能搜索词(例如,tsvector 列将等于 to_tsvector(header || ' ' || body || '
我在表中有一个 tsvector 列,我希望能够从 tsvector 中删除一个词素。 我已经开始尝试使用 ts_stat 来重建一个新的 tsvector,但它看起来相当复杂。 有什么简单的方法吗?
我有以下 tsvector 更新触发器,用于表上的 tsvector 列“user_tsv”,允许我执行全文搜索, CREATE TRIGGER tsvector_user_update BEFORE
这是错误还是功能?我在 tsvector 属性上创建了一个索引(不使用字典)。 查询 SELECT title FROM table WHERE title_tsv @@ to_tsquery('ba
有什么方法可以从 tsvector 中获取有关词位在句子中的位置和出现次数的信息吗? 像这样 SELECT * FROM get_position(to_tsvector('english', 'Th
我是一名优秀的程序员,十分优秀!