ASP.NET搜索索引构建策略

时间:2010-09-21 15:13:25

标签: asp.net-mvc lucene lucene.net

这是我打算做的事情,我很感激任何人的意见:

我在Asp.net MVC中建立了一个论坛,现在想要添加Lucene.Net进行搜索。我的计划是每5-10分钟运行一个索引构建器线程,以使用对每个讨论所做的更改来更新搜索索引。

它的工作方式是我保留搜索索引中最后一次运行索引构建器线程的日期和时间。然后在每次执行索引构建器时,我从搜索中读回这个日期,然后索引自该日期和时间以来的任何更改。一旦我完成,我就会更新最后一次运行条目。

这样好吗?有人可以建议一个更好的方法来逐步索引论坛应用程序中的变化吗?

1 个答案:

答案 0 :(得分:1)

您需要维护一个计时器......如果索引操作在5分钟内没有停止,则另一个人将开始索引相同的更改,因此您还必须检查这种情况。

稍微好一点的方法是简单地使用一个保持活动的专用索引线程。此线程将从上次运行中获取更改并按您的描述处理它们,但它不会等待。索引操作完成后,它将立即重新启动,并在项目进入时不断编制索引。

如果没有其他要索引的项目,则线程将休眠5分钟(然后在唤醒时再次检查更改)。

通过这种方式,您可以确保一次只有一个客户端修改索引。它永远不会占用大量的CPU,如果你以某种方式错误管理计时器,或者你突然收到大量帖子,并且随着论坛的增长而扩展,而不需要时不时地调整索引间隔。 / p>

您需要监控线程的健康状况。