PostgreSQL 全文搜索标题没有包含足够的上下文

Mic*_*man 4 postgresql full-text-search

我正在使用 PostgreSQL 的全文搜索功能在客户站点上实现搜索功能。我正在使用该ts_headline函数来获取搜索词出现的上下文,但客户对显示的单词选择不满意。特别是,标题似乎始终以搜索词开头,而客户希望它提前几个词开始。

有什么方法可以将 PostgreSQL 配置为具有这种行为,或者修改 ts_headline 调用以获得所需的结果?

编辑:抱歉,首先没有包含一些示例 SQL。

SELECT
    ts_headline('english', "text", plainto_tsquery('"endpoints"'))
FROM "Page"
WHERE to_tsvector("text") @@ plainto_tsquery('"endpoints"') 
ORDER BY ts_rank(to_tsvector("text"), plainto_tsquery('"endpoints"'))
Run Code Online (Sandbox Code Playgroud)

Edm*_*und 5

使用 MaxFragments 选项,您可能会获得更好的结果。同样,您可以使用 MinWords 和 MaxWords,例如

SELECT
    ts_headline('english', "text", plainto_tsquery('"endpoints"'), 'MaxFragments=0, MinWords=5, MaxWords=9')
FROM "Page"
WHERE
    to_tsvector("text") @@ plainto_tsquery('"endpoints"') 
ORDER BY
    ts_rank(to_tsvector("text"), plainto_tsquery('"endpoints"'))
Run Code Online (Sandbox Code Playgroud)

您可能需要进行试验。

MinWordsMaxWordsMaxFragmentshttp://www.postgresql.org/docs/current/interactive/textsearch-controls.html

  • 如果你想显示整个内容,那么使用 `HighlightAll=TRUE` (2认同)