对于将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
以下是我的提示(没有特别的顺序):
- 选择最合适的锁定机制
- 使用SetRAMBufferSizeMB来减少写入索引时的磁盘I/O开销
- 不要过度使用SetMaxBufferedDocs属性
- 使用Search hits(TopDocs和ScoreDoc[])对象检索索引搜索结果
- 写索引是一项昂贵的操作,所以要谨慎使用
- 知道你将要索引的数据,因为如果不一致地存储,某些数据类型(例如日期)可能很难搜索
我之前的一个项目中有几个陷阱:
- 我不得不使用BooleanQuery来执行传统的AND操作来搜索多个字段
- Lucene中没有UPDATE功能,因此需要删除和重新添加文档
- 不能对标记化字段进行排序/OrderBy
我建议查看RavenDb的源代码,因为它是在Lucene之上构建的,并使用了许多最佳实践。
RavenDb绝对是最简单的方法——它实际上是lucene++。
关于如何使用它,我建议查看SubText博客引擎。代码是麻省理工学院授权的,所以你可以在你的项目中使用它,它有一个设计良好的索引编写器/读取器。
在我们的应用程序中,我们倾向于有一个作者和一个有许多读者的独立应用程序。锁定策略可能是关键——尤其是确保读者不会试图锁定索引。我对我们为实现这一目标而必须使用的具体术语一无所知。