2011-04-13 73 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