开发者社区> 问答> 正文

如何构建数据以提高可搜索性

我正在编写专门针对音乐播放列表的搜索应用程序。

不同播放列表的流派和文件格式不同,有时在播放列表中也有所不同。还有一个“同义词”标签的概念(例如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

展开
收起
保持可爱mmm 2019-11-29 20:01:20 500 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《开放搜索查询分析服务架构分享》 立即下载
《开放搜索统一召回引擎实践》 立即下载
打造高性能高可用的搜索服务——爱奇艺搜索架构实践 立即下载