【发布时间】:2010-08-13 22:02:58
【问题描述】:
我正在构建一个 ASP.NET MVC 站点,我计划在其中使用 Lucene.Net。我设想了一种方法来构建 Lucene 的使用,但不确定我计划的架构是否可行且高效。
我的计划:
- 在 Global.asax 中的
Application_Start事件中:我检查文件系统上是否存在索引 - 如果不存在,我创建它并用从数据库中提取的文档填充它。 - 提交新内容时:创建
IndexWriter,填写文档,写入索引,最后处理IndexWriter。IndexWriters没有被重用,因为我无法想象在 ASP.NET MVC 应用程序中这样做的好方法。 - 编辑内容时:我重复提交新内容时的相同过程,只是我先删除旧内容,然后添加编辑内容。
- 当用户搜索内容时:我检查
HttpRuntime.Cache以查看用户在过去 5 分钟内是否已经搜索过该词 - 如果有,我会返回这些结果;否则,我创建一个IndexReader,构建并运行一个查询,将结果放入HttpRuntime.Cache,将它们返回给用户,最后处置IndexReader。再一次,IndexReaders没有被重复使用。
我的问题:
- 这是一个好的结构 - 我该如何改进它?
- 是否有任何性能/效率问题我应该注意?
- 另外,不重用 IndexReaders 和 IndexWriters 是否有很大的代码异味?
【问题讨论】:
-
如果你写了一个关于如何将 Lucene.NET 与你的 ASP.NET MVC 站点集成的简短的分步教程,那将是很棒的,最好是作为一个关于 SO 的 wiki 风格的答案。跨度>
-
@FreshCode 好电话。我的实现并不完美,但它确实有效,我想我会在下周期末考试结束时写出来。无论如何,我一直打算发布一堆 ASP.NET MVC 助手,所以我会及时通知你。
-
@MaximZaslavsky 你写过那个教程吗?我有兴趣阅读它。
标签: c# asp.net asp.net-mvc lucene lucene.net