Есть ли функция ts (текстовый поиск) будет возвращать найденную строку вместо логического? - PullRequest
1 голос
/ 04 ноября 2019

Я использую PostgreSQL, чтобы найти подходящую строку в статье, используя tsvector и tsquery.

Я прочитал руководство PostgreSQL 12.3 Управление текстовым поиском, но ничто не могло помочь мне получить точный вывод, который я хотел.

Запрос:

SELECT ts_headline('english',
  'The most common type of search
is to find all documents containing given query terms
and return them in order of their similarity to the
query.',
  to_tsquery('query & similarity'),
  'StartSel = <, StopSel = >');

вывод ts_headline

The most common type of search
is to find all documents containing given <query> terms
and return them in order of their <similarity> to the
<query>.    

Я ищу единственную строку, как указано ниже:

запрос, сходство

1 Ответ

0 голосов
/ 04 ноября 2019

Если вы выберете разделители для StartSel и StopSel, которые, как вы уверены, не существуют в других местах строки, то это довольно легко сделать с регулярным выражением .

 SELECT  distinct regexp_matches[1] from
     regexp_matches(
        ts_headline('english',
  'The most common type of search
is to find all documents containing given query terms
and return them in order of their similarity to the
query.',
            to_tsquery('query & similarity'),
            'StartSel = <, StopSel = >'
         ),
         '<(.*?)>','g'
     );
...