gpt4 book ai didi

azure - 如何在Azure webrole上实现Lucene .Net搜索

转载 作者:行者123 更新时间:2023-12-03 03:19:51 25 4
gpt4 key购买 nike

我正在使用 AzureDirectory 和 Lucene .NET 2.9.4,但我有两个问题:

  1. 搜索器似乎没那么快。我正在使用这些设置进行索引:indexWriter.SetUseCompoundFile(false);indexWriter.SetMergeFactor(1000);索引约为 3.5GB,有 12.126.436 个文档。即使索引已位于本地磁盘上,创建 indexSearcher 也需要大约 5 分钟或更长时间。是不是索引太大了?我尝试使用 MultiFieldQueryParser 在两个字段上执行单个术语搜索。字段上的 TermVector 已关闭
  2. Everywhere建议只创建一个indexSearcher的实例并在查询之间共享它(实际上创建起来很慢)但我不知道如何共享Searcher单例(它是执行搜索的类)各种网络请求之间。如果我在 webrole 类上创建单例,那么如何使用该实例来执行搜索?此时,每个网络请求都会重新创建单例。

非常感谢

最佳答案

我实际上已将 Lucene.NET 的确切版本与 AzureDirectory 一起使用,但效果不佳。我认为 AzureDirectory 不是为生产规模而编写的。

如果您查看 AzureDirectory 的源代码,它使用的是:

  • 旧版本的 Lucene 作为基础 (2.3x)
  • 到处都会抛出异常(很难在生产中调试/捕获正确的异常)
  • 它使用旧的存储 API(1.8 版本之前的 SDK)

我最终创建了自己的专用虚拟机并使用 .net 3.0.3 Lucene.Net 库。在该环境中工作起来就像冠军一样,因为我不需要实现 AzureDirectory。

您应该只有一个易于使用存储队列实现的 IndexWriter。如果您想限制它们写入 IndexReader 池(如 SQL 连接池),则可以拥有多个 IndexReader。我有多个运行良好,没有异常(exception),就像它们在 AzureDirectory 中一样。

我的环境有点不同,有很多较小的索引......而不是一个大的索引。

关于azure - 如何在Azure webrole上实现Lucene .Net搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13222479/

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