фразуto_tsquery для текстового массива с использованием postgresql - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть следующие две таблицы

таблица триггеров_ключей

CREATE TABLE trigger_keyword
(
    id bigint NOT NULL,
    keyword_array text[],
    CONSTRAINT trigger_keyword_id PRIMARY KEY (id)
)

таблица триггеров_мессажа

CREATE TABLE trigger_message
(
    id bigint NOT NULL,
    message text NOT NULL,
    trigger_keyword_id bigint,
    CONSTRAINT trigger_message_id PRIMARY KEY (id)
)

У меня есть следующие тестовые данные

триггер_ключейtable

id   keyword_array
-----------------------------------------------------
1    {weather, climate}    

trigger_message table

id   message                   trigger_keyword_id
-----------------------------------------------------
1    yes, the weather is good  1
2    expect rain               1
3    partly cloudy             1

Следующий запрос работает должным образом, если столбец ключевого слова в trigger_keyword равен text, но не работает, когда столбец text[]

SELECT m.message
FROM trigger_keyword AS k
   JOIN trigger_message AS m ON k.id = m.trigger_keyword_id
WHERE to_tsvector('simple', 'tell me the weather')
      @@ phraseto_tsquery('simple', k.keyword); <-- this would become k.keyword_array after removing the text column and adding a text[] column 

Как я могу изменить приведенный выше запрос для работы с массивом текста вместо текста?

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

Я знаю, что рекомендуемый способ сделать это - использовать таблицу мостов, но редактирование и сопоставление вещей становится громоздким, поэтому я хотел бы использовать массиввместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...