Я хочу рассчитать взвешенную оценку на основе полнотекстового поиска для определенных столбцов в таблице PostgreSQL.У меня есть три столбца в таблице (имя таблицы: люди) с названием местоположение, интересы и отрасли.Все столбцы содержат несколько данных, хранящихся в массиве.
Это прекрасно работает с MYSQL.Мне нужен аналогичный запрос в PostgreSQL.
select *, (MATCH (interest) AGAINST ('javascript python')*0.6
+ MATCH (location) AGAINST ('ahmedabad')*0.3
+ MATCH (industry) AGAINST ('IT services')*0.1) as score
FROM people order by score desc
Запрос должен возвращать оценку для каждой записи на основе полнотекстового поиска и веса для каждого столбца.
Match()
иagainst()
используются для полнотекстового поиска . Строка в аргументе against()
ищет в индексированном столбце совпадения.Все слова, разделенные пробелом, рассматриваются как разные подстроки для полнотекстового поиска.
Для приведенного выше запроса ожидаемый результат должен быть: