【问题标题】:Can I store a Lucene index in a database or other location than a file system?我可以将 Lucene 索引存储在数据库或文件系统之外的其他位置吗?
【发布时间】:2016-03-15 23:14:11
【问题描述】:

我将 Lucene.NET 用于我的 Web 项目。我希望使用 Azure 将索引迁移到 webjobs,但是 Lucene 使用传统的“文件系统”来存储索引。

是否有其他选项可以存储和写入索引,例如 SQL?

【问题讨论】:

  • 更好的方法是获取虚拟机并拥有永久磁盘驱动器。如果您选择 PaaS,那么您将面临上述问题。您不能将 lucene 索引放在 SQL 中。老实说,它会扼杀它的目的。正如@astaykov 所说,azure 目录是一种选择,但请相信我,它的性能很差。我之前用过,然后我们切换到VM。
  • 你能试试看弹性搜索吗?它仅在内部使用 Lucene。我们实际上转移到弹性搜索的项目之一。老实说,我对此没有深入的了解。但它为您提供了基于 rest 的 API 来访问 lucene 索引中的数据。
  • 您可能对这个项目感兴趣:github.com/MahyTim/LuceneNetSqlDirectory

标签: c# azure lucene.net


【解决方案1】:

Lucene.Net 的 Azure 目录: https://github.com/azure-contrib/AzureDirectory

有点,可能没有得到很好的支持,但我知道没有其他选择。您不能将 Lucene 数据存储在 DB(无论是什么 DB)中。这毫无意义。

【讨论】:

  • 我同意 - 但是 Lucene 是基于“文件系统”的,这给云托管或一般容错带来了挑战。寻找任何方式在没有老式文件系统的情况下读取和写入索引。
  • 然后在它之上使用抽象层——比如 Elastic Search 或 Solr。 Elastic 在 Azure VM 上运行良好。
【解决方案2】:

Lucene 中的所有 I/O 操作都是通过 Directory 类完成的。因此,如果想为您的索引使用不同的存储引擎,您需要做的就是实现一个自定义目录。有关如何执行此操作的示例,请查看此项目:MongoDB.Lucene。其他人已经在 Azure、Redis 等之上实现了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 2010-09-15
    • 2010-10-05
    • 1970-01-01
    相关资源
    最近更新 更多