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

时间:2012-04-17 09:50:52

标签: 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"'))

1 个答案:

答案 0 :(得分:3)

使用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

中查看MinWordsMaxWordsMaxFragments