我想知道是否有关于将基于 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/