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

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

我想知道是否有关于将基于 Lucene.NET 的搜索集成到 ASP.NET MVC Web 应用程序的任何建议、最佳实践或重要提示?

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

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

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

谢谢,
基隆

最佳答案

以下是我的建议(排名不分先后):

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

我之前的一个项目中的一些陷阱是:

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

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

关于c# - 是否有将 Lucene.NET 集成到 ASP.NET MVC 应用程序中的任何建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6100655/

相关文章:

c# - 将数据库添加到 visual studio 中的项目

c# - 有没有一种方法可以让类使用反射访问继承自它的类中的字段?

c# - 将 CsvHelper 自定义转换器应用到特定类映射字段

c# - 在 Sitecore 中无法访问 WebMethod

asp.net-mvc-3 - ASP.Net MVC 3 JSON 模型绑定(bind)和服务器端模型验证与客户端验证混合

Lucene SimpleFacetedSearch Facet 计数超过 2048

c# - 如何为同一主机上的同一契约(Contract)同时支持 DataContractSerializer 和 XMLSerializer?

asp.net-mvc - Structuremap 不适用于 MVC4

javascript - Ajax、asp.net mvc3 路由和相关 url

c# - NHibernate + SqlServer 全文搜索