#sql #postgresql
#sql #postgresql
Вопрос:
Я попробовал полнотекстовый поиск с помощью postgresql с помощью этого кода
SELECT * FROM test_table WHERE MATCH (discription) AGAINST ('remote controller');
имя столбца — «описание»
ключевое слово — «удаленный контроллер»
сообщение об ошибке здесь
ERROR: syntax error at or near "AGAINST"
1: ...LECT * FROM test_table WHERE MATCH (discription) AGAINST ('...
Я не могу понять, что не так??
Комментарии:
1. Где в руководстве вы нашли это
match()
илиagainst()
допустимы?2. Вы используете синтаксис MySQL в базе данных Postgres. Неудивительно, что вы получаете синтаксическую ошибку. Посмотрите в документах Postgres, как выполнить полнотекстовый поиск.
Ответ №1:
Как сказал Гордон Линофф, вы используете синтаксис MySQL в Postrgres. Альтернативный запрос для Pstgreses следующий:
SELECT *
FROM test_table
WHERE to_tsvector(discription) @@ to_tsquery('remote controller');
В двух словах… тип данных ts_vector предоставляется для хранения предварительно обработанных документов (представляет собой отсортированный список отдельных лексем, которые представляют собой слова, которые были нормализованы для объединения разных вариантов одного и того же слова). Когда tsquery используется для представления обработанных запросов.
более подробную информацию вы можете найти по следующим ссылкам:
https://www.postgresql.org/docs/12/textsearch-tables.html#TEXTSEARCH-TABLES-SEARCH
https://www.postgresql.org/docs/12/textsearch.html
Примечание: для повышения производительности поиска вы также можете использовать индекс для этого: https://www.postgresql.org/docs/12/textsearch-tables.html#TEXTSEARCH-TABLES-INDEX
Ответ №2:
Этот запрос будет работать:
SELECT * FROM test_table WHERE
difference(discription, 'remote controller') > 2;
Система Soundex — это метод сопоставления похожих по звучанию имен путем преобразования их в один и тот же код.
Функция soundex преобразует строку в свой код Soundex. Функция difference преобразует две строки в их коды Soundex, а затем сообщает количество совпадающих позиций кода. Поскольку коды Soundex содержат четыре символа, результат варьируется от нуля до четырех, причем ноль не соответствует, а четыре — точное совпадение.
ПРИМЕЧАНИЕ: функция difference выдает разницу между кодом soundex из двух строк.