WebベースのアプリケーションでLuceneを使用していて、すべての着信要求に対してIndexsearcherの同じインスタンスを再利用したいとします。IndexSearcherを再利用する
このロジック(C#を使用)は意味がありますか?お勧めします。
DateTime lastWriteTime = System.IO.Directory.GetLastWriteTime(myIndexFolderPath);
if (HttpRuntime.Cache["myIndexSearcher"] == null) //Cache is empty
{
searcher = new IndexSearcher(myIndexFolderPath);
HttpRuntime.Cache.Insert("myIndexSearcher", searcher);
HttpRuntime.Cache.Insert("myIndexTimeStamp", lastWriteTime);
}
else //Cache is not empty
{
DateTime cachedDateTime = (DateTime)HttpRuntime.Cache["myIndexTimeStamp"];
if (cachedDateTime == lastWriteTime)//Cache is not yet stale
{
searcher = (IndexSearcher)HttpRuntime.Cache["myIndexSearcher"];
}
else
{
searcher = new IndexSearcher(myIndexFolderPath); //index folder is modified...update searcher
HttpRuntime.Cache.Insert("myIndexSearcher", searcher);
HttpRuntime.Cache.Insert("myIndexTimeStamp", lastWriteTime);
}
}
すべてのコードを4つのスペースにインデントすると、読みやすくなります。 – itsadok
ありがとうございます。これを覚えておいてください。 –