2011-04-13 72 views
2

我已經制定了這樣一個MySQL表:文本跨多個領域搜索的MySQL

ID | Artist | Title 

其中包含MP3 ID3標籤獲取歌曲信息。

現在,我希望能夠對此進行搜索,但傳入的數據可能有多種格式。我相信你們都知道ID3標籤在一些人持有它們後會如何結束。

我有以下查詢,我已經嘗試過,但現在看它,我完全理解爲什麼它不帶回結果集。我剛剛從創意中脫穎而出。

SELECT CONCAT(artist, ' ',title) as trackname 
FROM sound_tracklist 
WHERE CONCAT(artist,' ',title) LIKE '%[JunkTags]Artist - Title[More Junk - www.junkwebsite.com]%' 

我會很感激這方面的任何輸入/方向。

感謝

+0

您需要比'LIKE'%string%''更強大的搜索機制。例如,嘗試將搜索詞分解爲單詞並對每個單詞執行搜索。 – Dimitry 2011-04-13 20:11:03

回答

10

如果你的MyISAM表型的時候,請嘗試使用FULLTEXT指數:

ALTER TABLE sound_tracklist ADD FULLTEXT INDEX (artist, title); 

那麼你可以做

SELECT artist, title FROM sound_tracklist WHERE MATCH (artist, title) AGAINST ('bach brandenburg concerto') 

它不會趕上拼寫錯誤(」 konshertoe「,任何人?),但它會在索引中的所有字段中搜索指定的鍵盤,並以任意順序捕捉它們。

+0

非常感謝Marc,工作很棒:) – Dave 2011-04-13 20:20:44

+2

'鍵盤'? Sheesh ...我真的需要睡更多。 – 2011-04-13 20:24:56

+1

大聲笑..我認爲這是作爲一個全文雙關語;) – Dave 2011-04-13 20:31:26