gpt4 book ai didi

java - 使用 Lucene 将整个数据库索引到单个文档中

转载 作者:行者123 更新时间:2023-11-30 03:40:29 25 4
gpt4 key购买 nike

我正在致力于提高现有 ASP.Net 应用程序的性能,并减少页面上每个搜索条件单击的数据库点击量。在此过程中,我正在尝试实现 Lucene.Net 。

但奇怪的是,我试图在一个拥有数百万条记录的表上使用“select *”语句进行索引,该表本身卡在数据库级别。

那么如何才能用更少的时间将整个“select *”结果放入单个文档中,而不会使应用程序挂起,从那里我可以在文档上应用搜索过滤器并显示在网格中。

提前致谢

最佳答案

在 Lucene.NET 中对数百万条记录建立索引时,您将需要分解该过程。您要做的就是预先读取所有数据,将其放入内存中,然后让 Lucene.NET 获取所有读取的数据,然后构建一个庞大的索引。它只会因大型数据集而崩溃。您需要将流程分解为“缓冲”架构。

我过去所做的是......以及你可以做的例如:

  • 将 select 语句分解为一个存储过程,该过程返回数百万条记录。例如,如果我有 1 亿条记录,它将返回:2500 万条四次
  • 我还使用了四个不同的线程来读取数据。然后启动一个异步队列,一旦从数据库中读取数据,它就会被送入队列缓冲区。阅读 .NET 中的 BlockingQueues
  • 然后,您有另一系列线程从队列中读取数据,然后它们会将其通过管道传输到 Lucene 索引构建过程中
  • 最后一步是并行构建索引(来自上一步),并使用 Lucene.NET 合并选项将所有数据合并到一个大索引中

我发现这种架构具有可扩展性,因为您可以运行与内核一样多的线程(读取和构建)。它也是云可扩展的,因为如果您有一个 super 巨大的索引,您可以使用 Azure Worker Roles 和 Queues 将其扩展到许多机器。

关于java - 使用 Lucene 将整个数据库索引到单个文档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26905510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com