我有一套分貝的項目。每個item
有一個name and a description
。我需要實現一個search
設施,它需要一些關鍵字並返回不同的項目,其中至少有一個關鍵字匹配名稱or
描述中的一個詞。如何創建用於搜索部分匹配的sql查詢?
例如 我在分貝,三個項目
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襯墊搜索
使用關鍵字「商場」應該返回一個搜索第二項
我使用LIKE
關鍵字和分別IN
關鍵字,.. 試圖對於IN
關鍵字工作,查詢必須是
SELECT DISTINCT FROM mytable WHERE name IN ('pall mall cigarettes')
但
SELECT DISTINCT FROM mytable WHERE name IN ('mall')
將返回0行
我無法弄清楚如何使可同時名稱和描述列,並允許部分單詞匹配查詢..
有人可以幫忙嗎?
更新:
我通過休眠和用於描述字段,用於javax.persistence @Lob annotation.Using PSQL創建表時我檢查表,它示出
...
id | bigint | not null
description | text |
name | character varying(255) |
...
表中的記錄之一就是,
id | description | name
21 | 133414 | magic marker
您需要使用LIKE而不是IN。 IN用於從一組中找出值。 LIKE應該用於部分字符串比較。 – Bruce
首先,你需要弄清楚文本描述存儲在哪張表中 –
有沒有什麼辦法可以找到?我使用postgres ..使用/ d命令找不到多少 –