小编rya*_*err的帖子

`ts_headline` 是否旨在突出显示查询的不匹配部分(它确实如此)?

我在 Postgres 13.4 中运行一些复杂的 FTS 查询,发现了一些ts_headline意想不到的行为,至少对我来说是这样,并且不确定我是否遇到了功能或错误。;)

初始健全性检查:

SELECT plainto_tsquery('english', 'red dog') @@ to_tsvector('The quick brown fox jumped over the lazy dog.');

-- false
Run Code Online (Sandbox Code Playgroud)

不出意外:tsquery计算结果为'red' & 'dog',文档不包含'red',不匹配。但当我试图成为头条新闻时:

SELECT ts_headline('The quick brown fox jumped over the lazy dog.', plainto_tsquery('english', 'red dog'));

-- The quick brown fox jumped over the lazy <b>dog</b>.
Run Code Online (Sandbox Code Playgroud)

FOLLOWED_BY 运算符 ( <->) 也会发生同样的情况;您可以替换plainto_tsqueryphraseto_tsquery(或构造您自己的tsquery文字)。它仍然突出显示实际上不匹配的片段。

问题不是(或者至少不完全)是在ts_headline没有真正匹配的情况下尝试调用的结果。我原来的情况其实更像是:

SELECT ts_headline('I want a red dog, but not …
Run Code Online (Sandbox Code Playgroud)

postgresql full-text-search

6
推荐指数
0
解决办法
547
查看次数

标签 统计

full-text-search ×1

postgresql ×1