我有以下问题:我的数据库包含超过200万条记录。每个记录都有一个字符串字段X,我想显示一个记录列表,其中字段X包含某个字符串。每条记录的大小约为500字节。
更具体地说:在我的应用程序的GUI中,我有一个文本字段,可以在其中输入字符串。在文本字段上方,我有一个表,显示与文本字段中的字符串匹配的(前N个,例如100个)记录。当我在文本字段中键入或删除一个字符时,表内容必须即时更新。
我想知道是否存在使用适当的索引结构和/或缓存的有效方法。如上所述,我只想显示与查询匹配的前N个项目。因此,对于足够小的N来说,从数据库中加载匹配项应该不是大问题。此外,在主存储器中缓存项目可以使检索更快。
我认为主要问题是在给定模式字符串的情况下如何快速找到匹配项。我可以依靠某些DBMS工具,还是必须自己构建一些内存索引?有任何想法吗?
编辑
我已经进行了第一次实验。我已将记录分为不同的文本文件(每个文件最多200条记录),并将文件放在不同的目录中(我使用一个数据字段的内容来确定目录树)。我最终得到大约40000个目录中的大约50000个文件。然后,我运行Lucene来索引文件。使用Lucene演示程序搜索字符串非常快。拆分和建立索引花费了几分钟:对于我来说这完全可以接受,因为它是我要查询的静态数据集。
下一步是将Lucene集成到主程序中,并使用Lucene返回的命中将相关记录加载到主存储器中。