我目前正在一个Web应用程序中运行Lucene.net,我想知道最好的方法,性能方面.
我目前已将其设置为使所有索引写入在计划过程中一起处理,同时优化索引.
但是对于搜索 - 我目前正在按搜索打开和关闭搜索者,我知道这并不理想.
在这种情况下,您认为最好的方法是什么?
一旦处理了更新/优化,我就需要关闭并重新打开索引搜索器,这样调度的进程(这是一个Windows控制台应用程序)需要将它完成传递给Web应用程序.
我刚刚将Lucene.NET集成到BugTracker.NET中.我不确定我所做的是最好的,但它似乎运作良好.
我在app启动时创建索引.
我创建了一个搜索器并保留它,以便每次搜索都不会重新加载索引.所有线程共享同一个搜索者.当搜索者搜索时,它会抓住锁.
同时,我有一个IndexWriter,可以在数据发生变化时更新索引.它只是改变了一点,所以它快速完成任务.当它运行时,它会抓取相同的锁,销毁搜索器,更新索引,然后重新创建搜索器.新的搜索者会一直待到下一次更新索引.搜索者总是使用最新的索引.
您可以获取BugTracker.NET源代码并查看文件my_lucene.cs和search_text.aspx.这些都在这两个文件中,并没有那么多代码.