立即管理和搜索100,000多个对象的有效方法?(C#)

Kir*_*met 2 c# wpf search full-text-search visual-studio

我正在为拥有大量收藏(超过100,000首歌曲)的爱好者写一个媒体播放器,我的主要目标之一是搜索速度.我想允许用户根据以下因素对其整个音乐集进行Google式搜索:

  • 歌曲路径和文件名
  • ID3标签中的项目(标题,艺术家,专辑等)
  • 歌词

我存储这些数据并搜索数据的最佳方式是什么?目前,我将每个轨道存储在一个对象中,并迭代这些对象的数组,根据给定的搜索文本检查每个变量的字符串匹配.

虽然我的搜索无效,但我遇到了问题,因为它始终是一个短语搜索,我不知道如何使它更模糊.像SQLlite这样的内部数据库会比这更快吗?关于如何构建这个系统的任何想法?

我还需要播放列表持久性,这样当他们关闭应用程序并打开应用程序时,他们会立即加载相同的播放列表.我应该如何存储播放列表信息,以便在应用程序启动时可以快速加载?目前我是JSON编码整个播放列表,将其存储在一个文本文件中,并在运行时将其读入ListView,但它已经超过20,000个曲目.

谢谢!

k_b*_*k_b 8

SQLite应该可以正常工作.对于扩展搜索功能,您可以查看Lucene.NET.关于您的大型播放列表,这些也应存储在数据库中,并使用分页加载它们(即一次50个轨道).