2016-11-25 5 views
0

Мне нужно получить соответствие ключевых слов из результата в отдельной колонке.Postgresql: Получить сопоставленные ключевые слова

Таблица:

| name | description  | info   | matched  | 
|---------|-------------------|-----------------|-----------------| 
| Event1 | This will be great| great experience|great,experience | 
| Event2 | great experience | great thinking |great,experience | 
| Event3 | Great match  | think   |great   | 

Массив: {большой опыт}

С помощью этого массива, я хочу совпавшие ключевые слова, как показано выше

ответ

0

Что-то вроде этого:

select e.name, 
     e.description, 
     (select string_agg(distinct lower(m.word), ',') 
     from regexp_split_to_table(concat_ws(' ', e.description, e.info), '\s') as m(word) 
     where lower(m.word) = any(array['great','experience'])) 
from events e; 

Но это будет не очень быстро

Пример: http://rextester.com/UHAU52066

Смежные вопросы