Как избежать подчеркивания при подготовке tsquery для PostgreSQL полнотекстового поиска? - PullRequest
1 голос
/ 14 января 2020

У меня ниже plainto_tsquery запрос как часть полнотекстового поиска в таблице PostgreSQL.

SELECT plainto_tsquery('english', 'flat discount on flight_tickets');

Этот запрос вернет 'flat' & 'discount' & 'flight' & 'ticket'

Есть ли способ заставить его вернуться 'flat' & 'discount' & 'flight_ticket'

Чтобы не закрывать тикет, помечая его как дубликат, я проверил ниже вопросы stackoverflow

1 Ответ

1 голос
/ 14 января 2020

Вы можете "предварительно обработать" текст и запросы, чтобы заменить _ другим символом, таким как /.

CREATE INDEX ON texts USING gin (to_tsvector('english', replace(doc, '_', '/')));

SELECT * FROM texts
WHERE to_tsvector('english', replace(doc, '_', '/'))
      @@ plainto_tsquery('english', replace('flat discount on flight_tickets', '_', '/'));
...