PostgreSQL 中看似不完整的文本向量化
Seemingly incomplete vectorization of text in PostgreSQL
任何人都可以解释一下这个 Postgres SQL 查询中的文本矢量化似乎不完整吗?
with x as
(
select 'the organic organization organizes organisms'::text as t,
to_tsvector('english','the organic organization organizes organisms'::text) tvect
)
SELECT t,
left(ts_headline(t, 'organic'::tsquery), 100),
ts_rank_cd(tvect, 'organic'::tsquery)
FROM x
WHERE (tvect @@ 'organic'::tsquery)
order by ts_rank_cd(tvect, 'organic'::tsquery) desc;
在这种情况下,当我尝试按实际文本进行搜索时 'organic',搜索结果为空。
to_tsvector 从 'organic' 到 'organ' (无论如何都是英文)。 to_tsquery 也这样做,但你没有使用它。通过使用 ::tsquery,您可以直接进行转换,从而绕过词干分析器。
并且 'organic' 不匹配 'organ'。您必须对匹配运算符的两边应用相同的词干提取规则。
任何人都可以解释一下这个 Postgres SQL 查询中的文本矢量化似乎不完整吗?
with x as
(
select 'the organic organization organizes organisms'::text as t,
to_tsvector('english','the organic organization organizes organisms'::text) tvect
)
SELECT t,
left(ts_headline(t, 'organic'::tsquery), 100),
ts_rank_cd(tvect, 'organic'::tsquery)
FROM x
WHERE (tvect @@ 'organic'::tsquery)
order by ts_rank_cd(tvect, 'organic'::tsquery) desc;
在这种情况下,当我尝试按实际文本进行搜索时 'organic',搜索结果为空。
to_tsvector 从 'organic' 到 'organ' (无论如何都是英文)。 to_tsquery 也这样做,但你没有使用它。通过使用 ::tsquery,您可以直接进行转换,从而绕过词干分析器。
并且 'organic' 不匹配 'organ'。您必须对匹配运算符的两边应用相同的词干提取规则。