2012-01-23 15 views
2

私はSitecoreでLucene検索を実装しようとしています。デフォルトのSitecore.Search実装を使用すると、私はは私の設定ファイルで定義されたインデックスへの参照を取得し、index.Rebuildを呼び出すことができるはずです。LuceneとSitecoreを使用してロックを取得できません

AdvancedDatabaseCrawlerのRebuildDatabaseCrawlersスクリプトを試しましたが、Rebuildを呼び出すたびに失敗します。

私が受け取るエラーは、次のとおりです。

Lock obtain timed out: [email protected]:\sites\MySite\Data\indexes\__mysite\write.lock 

私はすべて無駄に、データベースとIISを再起動し、(みんなフルパーマを与えることを含む)を変更する権限を試してみました。また、検索設定セクションを最小限にとどめて、同じ結果を得ようとしました。

残念ながら、私はindex.Rebuild()メソッドがSitecore.Searchアセンブリの内部で何をしているかについてはわかりません。

+0

あなたが言及したADCスクリプトに 'Rebuild()'メソッドのインクルードを呼び出してみてください。私はそれが最適化を伴う通常の方法を呼んでいると信じています。 –

+0

それは私が呼んでいるものです。別のスレッドでジョブを作成する標準バージョンを試してみましたが、現在は再構築を同期的に呼び出すことでトラブルシューティングを行っています。 – DarkenedPhoenix

答えて

1

アプリプールユーザーのc:\Tempのアクセス許可を調整してください。 Network Service

また同じことをやろうとすることができる:c:\windows\microsoft.net\framework\{version}\Temporary ASP.NET Files

2

問題はコンフィギュレーションに関連していることになりました。

具体的には、Sitecore.SearchとSitecore.Data.Indexingの両方を必要としないと判断して、余分なSitecore.Data.Indexing参照を構成ファイルから削除しようとしたとき、私は次の行をコメントアウトしました:

<configuration> 
    <appSettings> 
    <add key="Lucene.Net.FSDirectory.class" value="Sitecore.Data.Indexing.FSDirectory, Sitecore.Kernel"/> 
    </appSettings> 
</configuration> 

これはそこにある必要があります。