Lucene.net在Web应用程序中使用IndexSearcher / IndexWriter

时间:2008-10-30 16:13:15

标签: c# asp.net lucene lucene.net

我目前正在网络应用程序中运行Lucene.net,并且想知道最佳方法,性能方面。

我目前已将其设置为使所有索引写入在预定流程中一起处理,同时优化索引。

但是对于搜索 - 我目前正在按搜索打开和关闭搜索者,我知道这不太理想。

您认为在这种情况下最好的方法是什么?

我需要在处理更新/优化后关闭并重新打开索引搜索器,以便计划的进程(这是一个Windows控制台应用程序)需要将其完成传递给Web应用程序。

2 个答案:

答案 0 :(得分:5)

我刚刚将Lucene.NET集成到BugTracker.NET中。我不确定我所做的是最好的,但它似乎运作良好。

我在app启动时创建索引。

我创建了一个搜索器并保留它,以便每次搜索都不会重新加载索引。所有线程共享同一个搜索者。当搜索者搜索时,它会抓住锁。

同时,我有一个IndexWriter,可以在数据发生变化时更新索引。它只是改变了一点,所以它快速完成任务。当它运行时,它会抓取相同的锁,销毁搜索器,更新索引,然后重新创建搜索器。新的搜索者会一直待到下一次更新索引。搜索者总是使用最新的索引。

您可以获取BugTracker.NET源代码并查看文件my_lucene.cs和search_text.aspx。这些都在这两个文件中,并没有那么多代码。

答案 1 :(得分:0)

您可以调用读者IsCurrent()方法来检查是否有新版本的索引可用,如果是,则重新打开它。不是最好的方法,但很容易,如果你的要求不是很大,那就足够了。

相关问题