ts_headline (PostgreSQL) поведение - PullRequest
0 голосов
/ 27 февраля 2020

Я использую функцию ts_headline для выделения текста поиска.

, поэтому есть два сценария ios:

В первом случае мы используем оператор "&" в tsquery, что означает Идентификатор любого из ключевых слов в тексте, который он выделит, работает нормально.

SELECT ts_headline(
    text,
    to_tsquery('apply & for & the & purposes'),
    'StartSel = <span>, StopSel = </span>,HighlightAll = true'
)

Во втором случае мы используем "tsquery after tsquery (<->)" в tsquery, что означает, что если Точная строка соответствует, тогда она должна быть выделена, но она работает как предыдущая.

SELECT ts_headline(
    text,
    to_tsquery('apply<->for<->the<->purposes'),
    'StartSel = <span>, StopSel = </span>,HighlightAll = true'
)

1 Ответ

0 голосов
/ 27 февраля 2020

"Во втором случае мы используем" tsquery after tsquery (<->) "в tsquery, что означает, что если точная строка совпадает, то она должна выделить"

Я полагаю, вы значит выделять только эту фразу, а не слова внутри фразы, а встречающиеся в другом месте? Хотя это, возможно, и разумно, но ts_headline не обещает этого делать, по крайней мере сейчас, где бы я ни был в документах. Или вы имеете в виду выделение даже стоп-слов внутри фразы? Это также не обещает сделать это, и стоп-слова удаляются до того, как ts_headline даже увидит их.

Вы можете попытаться придумать патч, чтобы изменить его на то, что вы хотите, хотя я подозреваю, что это будет отклонено по причинам обратной совместимости, если вы не создали новые флаги для управления им.

...