【问题标题】:Indexing a Music Lyrics Database索引音乐歌词数据库
【发布时间】:2011-08-07 11:14:46
【问题描述】:
所以我想从歌词网站索引歌词,然后对歌词执行操作(搜索某些艺术家、术语、模式等)。
我认为最好的情况是如果已经有一些结构化的文件格式供我使用-->有人知道这样的东西是否存在吗?
下一个最好的事情是一个“适合”我正在尝试做的事情的网站-->任何这样的网站?
关于我如何快速做到这一点的任何一般情况下的 cmet? (这应该是一个有趣的项目,而不是一个繁重的应用程序)
谢谢!
【问题讨论】:
标签:
php
python
database
search
indexing
【解决方案1】:
一般来说
1) 下载该歌词并将其存储在数据库中的单独表中
表格:歌词(示例)
+---------+-------------+-----------------+-------------------------------+
| lyr_id | lyr_artist | lyr_title | lyr_content |
+---------+-------------+-----------------+-------------------------------+
| 1 | Metallica | The Unforgiven | New blood joins this earth... |
+---------+-------------+-----------------+-------------------------------+
...
+---------+-------------+-----------------+-------------------------------+
2) 在lyr_artist 列中搜索艺术家,在lyr_title 列中搜索歌曲名称,在lyr_content 中搜索文本(关键字)等。
查询示例
SELECT * FROM lyrics WHERE lyr_artist='artist';
SELECT * FROM lyrics WHERE lyr_title='song_title';
SELECT * FROM lyrics WHERE lyr_content LIKE '%word1%' AND lyr_content LIKE '%word2%'
嗯,一般来说,类似的东西..或混合 WHERE 条件。您也可以将 WHERE...LIKE 用于歌曲标题和艺术家等列,例如,如果用户要求关键字“Unforgiven”等,则查找歌曲“The Unforgiven”等。
3) 使用查询结果显示搜索结果
注意:在速度方面,将数据存储在服务器上的文件中不如将其存储在数据库中。
【解决方案2】:
从站点下载歌词数据库是个坏主意,您可以查询它以获取您想要的每个歌词。
即使您下载了所有歌词,也不要将它们存储在平面文件中(可能是 xml?),而应使用 sqlite 之类的数据库。否则搜索或列表等操作会很痛苦。
但不知道适合的网站。
编辑;我找到了ChartLyrics API;您可以轻松使用他们的 API。