Полнотекстовый поиск в Postgresql
tsvector и tsquery
Для полнотекстового поиска в postgresql существуют типы данных: tsvector и tsquery
tsvector - документ оптимизированный(нормализованный) для поиска составляющих текста, для нормализации текста в документе используется процедура to_tsvector
tsquery - используется для нормализации запроса, если я правильно понимаю, текст запроса разбивается в массив слов разделенный символами, для преобразования поисковых запросов используется процедура: plainto_tsquery
Иначе говоря поиск находит документ tsvector на запрос tsquery
Для сопоставления используется оператор @@
Пример:
# sudo -u postgres psql -c "SELECT tag1, tag2, tag3, url_page, content_name \
FROM page_table \
WHERE to_tsvector(content_text) @@ plainto_tsquery('нам отправляют все ключи')" \
-x megabase
-[ RECORD 1 ]+----------------------------
tag1 | linux
tag2 | Alpine
tag3 | Nginx
url_page | konfiguracziya_ssl_v_nginx_
content_name | Конфигурация ssl в Nginx
Как и в простом случае SELECT вернет указанные атрибуты найденных строк, эти атрибуты с помощью php html java script генерируют ссылки на страницы где есть искомый текст, при переходе по ссылке, генерируется соответствующая страница
Источники
Здесь пока нет комментариев