【发布时间】:2011-02-26 04:07:51
【问题描述】:
我正在为拥有大量收藏(超过 100,000 首曲目)的爱好者编写一个媒体播放器,我的主要目标之一是搜索速度。我希望允许用户根据以下因素对他们的整个音乐收藏进行类似 Google 的搜索:
- 歌曲路径和文件名
- ID3 标签中的项目(标题、艺术家、专辑等)
- 歌词
对我来说存储这些数据并进行搜索的最佳方式是什么?目前,我将每个轨道存储在一个对象中,并遍历这些对象的数组,根据给定的搜索文本检查它们的每个变量是否匹配字符串。
虽然我的搜索无效,但我遇到了一些问题,因为它始终是短语搜索,我不知道如何使它更模糊。像 SQLlite 这样的内部数据库会比这更快吗?关于我应该如何构建这个系统的任何想法?
我还需要播放列表持久性,以便当他们关闭应用程序并打开应用程序时,他们的相同播放列表会立即加载。我应该如何存储播放列表信息,以便在应用程序启动时快速加载?目前我正在对整个播放列表进行 JSON 编码,将其存储在文本文件中,并在运行时将其读入 ListView,但超过 20,000 首曲目变得缓慢。
谢谢!
【问题讨论】:
-
SQLLite 听起来很合适。
-
如果你所做的一切都围绕着对象,你可以查看一个对象数据库——这样你就可以跳过 JSON 读取。那里有很多,但我没有足够的经验来推荐。大多数(但不是全部)都是商业产品。
标签: c# wpf visual-studio search full-text-search