如何在java中从大量数据中进行搜索

如何在java中从大量数据中进行搜索,java,Java,实际上,有12000多条记录从数据库中获取,并使用分页方式逐页显示。现在我在UI中有了一个搜索框,它可以搜索所有页面上的所有记录(大约12000条)。但这有时需要从这个巨大的记录中进行搜索 请您帮助我如何加快搜索速度。考虑以下选项: 不要在获取所有候选项后进行搜索,而是进行智能查询,以减少候选项的数量。也许您的情况如此简单,以至于您的查询可以表示完整的搜索 多线程搜索。 将12000个数据块拆分为可用的处理器内核数量(通过使用Runtime.getRuntime().availablePro

实际上,有12000多条记录从数据库中获取,并使用分页方式逐页显示。现在我在UI中有了一个搜索框,它可以搜索所有页面上的所有记录(大约12000条)。但这有时需要从这个巨大的记录中进行搜索


请您帮助我如何加快搜索速度。

考虑以下选项:

  • 不要在获取所有候选项后进行搜索,而是进行智能查询,以减少候选项的数量。也许您的情况如此简单,以至于您的查询可以表示完整的搜索
  • 多线程搜索。
    • 将12000个数据块拆分为可用的处理器内核数量(通过使用
      Runtime.getRuntime().availableProcessors()
      ),并为每个执行此任务的块启动一个线程
    • 如果每个对象的搜索量很大,您可能想看看是否有可能使用更便宜的搜索方法。也许只研究几个重要的领域。确保这项工作能很快完成。在另一个线程中,您可以进行更深入的搜索,并在找到结果时添加结果
  • 这个选项很难做到,但您可以实现一种技术,在用户仍在输入搜索词时搜索候选词。每输入三个字符,筛选当前候选字符集。这将允许您从12000个字符过滤到4000个字符,接下来的三个字符只剩下100个字符,等等。当然,这取决于具体情况

    • 有很多方法可以进行搜索

      1) SQL搜索,在这里您可以使用与使用java代码获取12000条记录和附加where子句相同的SQL语句。在这里,我们更喜欢搜索索引字段,或者您可以在可搜索字段的DB级别添加索引


      2) 全文搜索,有一种技术允许您将记录索引为全文索引,您可以阅读更多有关此的信息

      Hashmaps?还可以尝试为问题添加解决方案/方法。Talk很便宜,请向我们展示代码!1) 即使对于一个玩具数据库来说,12000条记录也是微不足道的。2) 通过发出一个可以获取所需内容的查询来加快速度。