2013-03-20 61 views
-4
tag1 - Novel, My pession, Holi, Book, My book, Having book 
tag2 - Holi Novel, My pession, Book, My book, Having book 
tag3 - Romantic Novel, My Novel, Book, My book, Having book 
tag4 - Novel based, My Novel, Book, My book, Having book 
tag5 - Ovel based, My Novel, Book, My book, Having book, Novel 
tag6 - Based, My Novel, Book, Novel, Having book, Presume 

我想只搜索那些有Novel的標籤。它應該是搜索tag1tag5 在全文檢索Mysql全文搜索特定字

+0

閱讀:http://whathaveyoutried.com – 2013-03-20 08:28:47

+1

你真的應該考慮[標準化](HTTPS://en.wikipedia .org/wiki/Database_normalization),如果你想要性能和可維護性。 – rid 2013-03-20 08:32:44

+0

是的,所以你應該在這裏有三個表:'book','tag'和'book_tag',最後一個具有另外兩個外鍵。然後使用'JOIN's做一個更快的方法。 – halfer 2013-03-20 08:50:50

回答

1

我通常每個關鍵字存儲在下列方式

,Novel,My Passion,Holi, 

即逗號在開始和字符串的結尾,所以現在不是小說,你可以搜索'%,Novel,%'LIKE命令,它的作品就像一個魅力。

+0

我們不能這樣做,因爲我們無法更新20個lacs記錄 – bhupendra 2013-03-20 08:43:02

+0

從您的示例中,它是簡單的更新查詢更新表set column =「,」+ column +「,」並且記錄格式良好。或者作爲其他評論者,您應該將其標準化以獲得更快的結果。記住TEXT搜索是最慢的。 – 2013-03-20 08:45:49

+0

我剛剛閱讀其他答案,你真的沒有選擇,只能按照我的經驗:)我的建議。或者進行正常化的方式。 – 2013-03-20 08:47:15

1

SELECT * FROM your_table WHERE受試者LIKE '小說'

UNION

SELECT * FROM your_table WHERE受試者LIKE '小說,%'

UNION

SELECT * FROM your_table 哪裏有題目喜歡'%,小說,%'

UNIO ñ

SELECT * FROM your_table WHERE主題LIKE '%,小說'

+0

謝謝,但對我們的數據庫來說太重了,因爲我們有超過20個紫膠。和這個查詢殺死我們的查詢並且花費超過40秒。 – bhupendra 2013-03-20 08:39:17

2
WHERE 
    tag1 REGEXP '(^|,)[[:<:]]Novel[[:>:]](,|$)' AND 
    tag5 REGEXP '(^|,)[[:<:]]Novel[[:>:]](,|$)' 
+0

擺脫感謝,但它正在搜索所有標籤,而不是tag1和tag5 – bhupendra 2013-03-20 08:36:57

+0

@bhupendra,更新的例子,猜測'tag1'和'tag5'是列。 – rid 2013-03-20 08:38:02

+0

@bhupendra你需要'SELECT * FROM表WHERE(標籤LIKE'%NOVEL,%'或標籤LIKE'%NOVEL%'或標籤LIKE'%,NOVEL%')' – 2013-03-20 08:38:57