SQL возвращает строки, если совпадает с ключевыми словами - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть большой список строк (вне базы данных PostgreSQL), и я хочу просмотреть этот список строк (в цикле) и хочу проверить, принадлежит ли какая-либо часть строки в таблице.

Например, у меня есть две следующие таблицы:

table name: trigger_keyword
id (int)
keyword (text)

и таблица 2:

table name: trigger_message
id  int
message text    
trigger_keyword_id int /*this is a fk to id on trigger_keyword */

Предположим, у нас есть ключевое слово "погода хорошая" вtrigger_keyword таблица, и у нас есть сообщение в trigger_message, связанное с идентификатором этого ключевого слова.

, поэтому ниже приведен пример того, как все выглядит в наших таблицах

trigger_keyword table

id                             keyword
-----------------------------------------------------
1    weather good

таблица trigger_message

id   message                   trigger_keyword_id
-----------------------------------------------------
1    yes, the weather is good  1

в одной из наших строк вне базы данных SQL у нас есть следующее предложение

"хорошая погода на Аляске?"

Какой SQL я могу написать, чтобы вернуть "да, погода хорошая", потому что "погода хорошая" есть в нашей таблице trigger_keyword?мне нужно использовать LIKE для этого?Мне нужна только помощь с частью SQL.

1 Ответ

0 голосов
/ 29 ноября 2018

Похоже, вы должны использовать полнотекстовый поиск:

SELECT m.message
FROM trigger_keyword AS k
   JOIN trigger_message AS m ON k.id = m.trigger_keyword_id
WHERE to_tsvector('english', 'is the weather good in Alaska?')
      @@ phraseto_tsquery('english', k.keyword);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...