[請益] mysql大量搜尋問題
這個問題有爬過文了~~
但好像都不是我想要的.....
問題內容是:
想做一個搜尋功能~像是論壇的那種...
也就是可以搜尋許多關鍵字如: 綠茶 紅茶 藍茶
這樣當三個關鍵字去搜尋....
然後區域也有指定..就是資料庫中的資料表 如: name place
這樣..兩個
也就是...sql語法會像是..
SELECT * FROM xxx WHERE name LIKE %紅茶%
這樣寫好像沒什麼問題~~可以正常搜尋出我要的資料!!
可是...如果有20個關鍵字~搜尋兩個資料表...
那不就要寫成這樣...
SELECT * FROM xxx WHERE name LIKE %紅茶% OR name LIKE %綠茶% OR
name LIKE %藍茶% ...等
這樣不就..or個39次嗎?40個敘述句!!
真的查詢多個東西要這樣嗎?
************我的想法***************
我有想到一個方法...
可是還沒開始寫~想問問大家意見!!
就是把每個關鍵字當成一次的select查詢
如: SELECT * FROM xxx WHERE name LIKE %紅茶% OR place LIKE %紅茶%
用迴圈跑...一個關鍵字跑一次~也就是有三個關鍵字就會跑三次!!
然後把資料存入陣列..資料庫中的serial當陣列的索引!
每次迴圈跑時會比對serial中的數字!
如果一樣~就不寫入迴圈...
這樣跑完再列出資料!
不知道這樣....是不是會比較好呢?還是比較費時呢?
想問問大家的意見!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.229.193.162
→
08/29 00:02, , 1F
08/29 00:02, 1F
→
08/29 02:40, , 2F
08/29 02:40, 2F
推
08/29 09:16, , 3F
08/29 09:16, 3F
推
08/29 13:24, , 4F
08/29 13:24, 4F
推
08/29 16:35, , 5F
08/29 16:35, 5F
推
08/29 16:50, , 6F
08/29 16:50, 6F
推
08/29 20:18, , 7F
08/29 20:18, 7F
→
08/29 20:18, , 8F
08/29 20:18, 8F
→
08/29 20:18, , 9F
08/29 20:18, 9F
推
08/29 23:04, , 10F
08/29 23:04, 10F
→
08/29 23:10, , 11F
08/29 23:10, 11F
→
08/30 01:16, , 12F
08/30 01:16, 12F
推
08/30 14:03, , 13F
08/30 14:03, 13F
推
08/30 17:50, , 14F
08/30 17:50, 14F
最近試了幾個...
發現regexp應該是比較適合的!!
這是我查網路上與自己測試的~不知有沒有錯~~
IN好像不適合!
因為它似乎一定要是完全符合的字才有辦法!!
譬如有一字串是 "Hello!你好嗎?"
它一定要是 "Hello!你好嗎?" 這樣才行!!
Hello 或是 你好 這樣它都搜不到!!
用%%它也不行!~~~
MATCH() AGAINST() 試了一下...似乎不能是中文!!
只能是數字或是英文~~~
以上測試~資料都從網路來~~不知這樣有沒有錯@?
regexp可以用 正規表示法 所以可以一次把全部關鍵字寫入
但還是有個問題~~~
三個資料表~~~還是要寫三次相同的正規表示法...
總覺得~~是不是可以省略那兩次~~正規表示法寫一次就行了!!??
※ 編輯: jimpop 來自: 125.229.193.25 (08/31 00:36)
※ 編輯: jimpop 來自: 125.229.193.25 (08/31 00:37)
推
09/01 03:55, , 15F
09/01 03:55, 15F
→
09/01 09:11, , 16F
09/01 09:11, 16F
PHP 近期熱門文章
PTT數位生活區 即時熱門文章