5

我正在使用 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"'))
4

1 回答 1

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"'))

您可能需要进行实验。

参阅和http://www.postgresql.org/docs/current/interactive/textsearch-controls.html MinWords_MaxWordsMaxFragments

于 2012-04-17T11:42:31.967 回答