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 に答える