У меня есть набор элементов в БД. Каждый item
имеет name and a description
. Мне нужно реализовать средство search
, которое принимает ряд ключевых слов и возвращает отдельные элементы, которые имеют по крайней мере одно из соответствующих ключевых слов. слово в названии or
описание.
например
У меня в БД три предмета
1.item1 :
name : magic marker
description: a writing device which makes erasable marks on whiteboard
2.item2:
name: pall mall cigarettes
description: cigarette named after a street in london
3.item3:
name: XPigment Liner
description: for writing and drawing
Поиск по ключевому слову «запись» должен возвращать магический маркер и XPigment Liner
Поиск по ключевому слову mall должен вернуть второй элемент
Я пытался использовать ключевое слово LIKE
и ключевое слово IN
отдельно, ..
Чтобы ключевое слово IN
работало, запрос должен быть
SELECT DISTINCT FROM mytable WHERE name IN ('pall mall cigarettes')
но
SELECT DISTINCT FROM mytable WHERE name IN ('mall')
вернет 0 строк
Я не мог понять, как составить запрос, который бы соответствовал столбцам имени и описания и позволял частичное совпадение слов.
Может кто-нибудь помочь?
Обновление:
Я создал таблицу через hibernate и для поля описания использовал javax.persistence @Lob annotation. Используя psql, когда я исследовал таблицу, она отображается
...
id | bigint | not null
description | text |
name | character varying(255) |
...
Одна из записей в таблице, как,
id | description | name
21 | 133414 | magic marker