1

目前,我们有一个应用程序需要对大约 2 个工厂记录执行非常快速的搜索。

搜索需要搜索一个大的自由文本字段,以及不同范围之间的许多整数/小数字段,以及各种函数/计算和排序。

目前,我们正在使用一个大型 MSSQL 数据库来处理这个问题,使用内置的自由文本引擎和一些复制来将负载从事务表中移开。

但是 - 正如您可能已经猜到的那样,这个解决方案并不是最具可扩展性的。

我已经编写了一个基于 Lucene 的小型文档存储,并且通常对结果印象深刻,文本搜索所用的时间不会超过每秒 1/2 秒(在 10 万条记录上)。

困难的部分是参数搜索——我知道 Lucene 可以进行基本的范围匹配——但是我觉得我们需要更强大的东西。

我使用 db4o 制作了一个小测试数据库——它具有强大的查询功能,但是这些查询非常慢——仅在 100k 条记录上占用超过 15 秒——其中 SQL 大约需要 1.5 秒用于自由文本和参数搜索。

此外,我们的数据库需要有小于 10 分钟的更新分辨率,每天大约有 15% 的记录发生变化。我们的 SQL 服务器目前正在处理这个问题,但开始吱吱作响。

任何有关合适技术和方法的指导将不胜感激。

干杯,戴夫

4

1 回答 1

0

LinkedIn 为 Lucene 编写了一个名为bobo的插件,以扩展其可能值得研究的事实搜索查询。但我认为只有当你有一个绝对庞大的索引时才真正需要 bobo - 如果搜索 100k 文档需要那么长时间,那么肯定会发生一些非常奇怪的事情。

于 2010-07-22T16:15:02.237 回答