我正在编写专门针对音乐播放列表的搜索应用程序。
不同播放列表的流派和文件格式不同,有时在播放列表中也有所不同。还有一个“同义词”标签的概念(例如Urban可以覆盖嘻哈和R&B,但不能同时覆盖)。
以下是搜索字词和预期结果的列表。
福音:应返回至少包含一首福音歌曲的所有播放列表。带有所有福音歌曲的播放列表将首先显示。城市:应归还所有R&B和嘻哈音乐。所有城市轨道的播放列表都将排在第一位。hiphop:应该返回所有hiphop,但不能返回r&b。flac:应返回所有包含flac文件的播放列表。从纯粹的flac开始。hiphop flac:应该首先返回hiphop flac,然后再返回其他hiphop音频hiphop AND flac:应该仅返回hiphop flacs hiphop音频:应该返回hiphop flac,hiphop mp3等
当我刚开始这个项目时,我正在考虑对所有这些进行索引的最佳方法。像Lucene这样的全文搜索东西在这里有用吗?请注意,我没有任何文字描述这些播放列表,但可以生成一些文字。
我正在考虑将所有这些术语组织为“标签”,并将它们多对多存储在数据库中。
表:播放列表(pk(id),desc)表:标记(pk(id),desc)表:playlist_has_tag(pk(link_id,tag_id))
解决市区==嘻哈|| 恩,我可能会添加一个tag_synonyms表:
表格:tag_synonyms(pk(tag_id,synonym_tag_id))
然后,我将有两条记录来指示Urban包含hiphop和rnb:urban的标签ID,hiphop的标签id urban的标签id,rnb的标签id
我感觉使用这种方法可能会使查询变得很复杂。
CouchDB可以在这里使用吗?我目前正在使用PostgreSQL。是否有一些软件可以使这种事情变得容易?
我希望将来能够深入研究并支持复杂的搜索字词,例如:
(hiphop或house)AND文件类型:mp3和艺术品:no
并且还包含持续时间等内容
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。