对于将Lucene.NET集成到ASP.NET MVC应用程序中,有什么建议吗

本文关键字:NET 什么 应用程序 MVC Lucene 集成 ASP | 更新日期: 2023-09-27 17:57:32

我想知道是否有任何建议、最佳实践或顶级技巧可以将基于Lucene.NET的搜索集成到ASP.NET MVC web应用程序中?

我在不同地方读过(或认为我读过)的东西包括以下内容:

  • 一个IndexWriter,多个IndexReader
  • 更新索引时,重置/重新初始化IndexReader s

在开始之前,我还应该阅读其他有用的提示或资源吗?

谢谢,
Kieron

对于将Lucene.NET集成到ASP.NET MVC应用程序中,有什么建议吗

以下是我的提示(没有特别的顺序):

  • 选择最合适的锁定机制
  • 使用SetRAMBufferSizeMB来减少写入索引时的磁盘I/O开销
  • 不要过度使用SetMaxBufferedDocs属性
  • 使用Search hits(TopDocs和ScoreDoc[])对象检索索引搜索结果
  • 写索引是一项昂贵的操作,所以要谨慎使用
  • 知道你将要索引的数据,因为如果不一致地存储,某些数据类型(例如日期)可能很难搜索

我之前的一个项目中有几个陷阱:

  • 我不得不使用BooleanQuery来执行传统的AND操作来搜索多个字段
  • Lucene中没有UPDATE功能,因此需要删除和重新添加文档
  • 不能对标记化字段进行排序/OrderBy

我建议查看RavenDb的源代码,因为它是在Lucene之上构建的,并使用了许多最佳实践。

RavenDb绝对是最简单的方法——它实际上是lucene++。

关于如何使用它,我建议查看SubText博客引擎。代码是麻省理工学院授权的,所以你可以在你的项目中使用它,它有一个设计良好的索引编写器/读取器。

在我们的应用程序中,我们倾向于有一个作者和一个有许多读者的独立应用程序。锁定策略可能是关键——尤其是确保读者不会试图锁定索引。我对我们为实现这一目标而必须使用的具体术语一无所知。