是否有任何建议将Lucene.NET集成到ASP.NET MVC应用程序中?

时间:2011-05-23 17:24:44

标签: c# asp.net-mvc-3 lucene.net

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

我在各个地方读过的(或者我认为我读过的)包括以下内容:

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

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

谢谢,
基隆

2 个答案:

答案 0 :(得分:6)

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

  • 选择最合适的锁定机制。
  • 使用SetRAMBufferSizeMB减少写入索引时的磁盘I / O开销。
  • 不要过度使用SetMaxBufferedDocs属性。
  • 使用搜索命中(TopDocs和ScoreDoc [])对象来检索索引搜索结果。
  • 索引编写是一项昂贵的操作,因此请谨慎使用。
  • 了解您将要编制索引的数据,因为如果没有一致地存储某些数据类型(I.E.,日期)可能很难搜索。

我之前的一个项目中的一些问题是:

  • 我不得不使用BooleanQuery来执行传统的AND操作来搜索多个字段。
  • Lucene中没有UPDATE功能,因此需要删除并重新添加文档。
  • 您无法在标记化字段上排序/订单。

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

答案 1 :(得分:4)

RavenDb绝对是最简单的方式 - 它真的是lucene ++。

就如何使用它而言,我建议查看SubText博客引擎。代码是MIT许可的,因此您可以在项目中使用它,它有一个设计精良的索引编写器/阅读器。

在我们的应用中,我们倾向于拥有一位作家和一位拥有众多读者的独立应用。锁定策略在这里是关键 - 特别是确保读者不要尝试锁定索引。我正在消除我们必须用来实现这一目标的具体术语。