目前,我们有一个应用程序需要对大约 2 个工厂记录执行非常快速的搜索。
搜索需要搜索一个大的自由文本字段,以及不同范围之间的许多整数/小数字段,以及各种函数/计算和排序。
目前,我们正在使用一个大型 MSSQL 数据库来处理这个问题,使用内置的自由文本引擎和一些复制来将负载从事务表中移开。
但是 - 正如您可能已经猜到的那样,这个解决方案并不是最具可扩展性的。
我已经编写了一个基于 Lucene 的小型文档存储,并且通常对结果印象深刻,文本搜索所用的时间不会超过每秒 1/2 秒(在 10 万条记录上)。
困难的部分是参数搜索——我知道 Lucene 可以进行基本的范围匹配——但是我觉得我们需要更强大的东西。
我使用 db4o 制作了一个小测试数据库——它具有强大的查询功能,但是这些查询非常慢——仅在 100k 条记录上占用超过 15 秒——其中 SQL 大约需要 1.5 秒用于自由文本和参数搜索。
此外,我们的数据库需要有小于 10 分钟的更新分辨率,每天大约有 15% 的记录发生变化。我们的 SQL 服务器目前正在处理这个问题,但开始吱吱作响。
任何有关合适技术和方法的指导将不胜感激。
干杯,戴夫