1

AzureDirectory と Lucene .NET 2.9.4 を使用していますが、次のような問題があります。

  1. サーチャーはそれほど速くないようです。これらの設定でインデックスを作成しています: indexWriter.SetUseCompoundFile(false); indexWriter.SetMergeFactor(1000); インデックスは約 3.5 GB で、12.126.436 ドキュメントがあります。indexSearcher を作成するには、インデックスが既にローカル ディスクにある場合でも、約 5 分以上かかります。インデックスが大きすぎませんか?2 つのフィールドで MultiFieldQueryParser を使用して単一用語検索を実行しようとしました。フィールドの TermVector はオフです
  2. どこでも indexSearcher のインスタンスのみを作成し、クエリ間で共有することが提案されています (実際には作成が遅いです) が、さまざまな Web 間で Searcher シングルトン (検索を実行するクラス) を共有する方法がわかりません。リクエスト。Webrole クラスでシングルトンを作成した場合、そのインスタンスを使用して検索を実行するにはどうすればよいですか? この時点で、すべての Web リクエストがシングルトンを再作成します。

どうもありがとう

4

2 に答える 2

1

私は実際にその正確なバージョンの Lucene.NET を AzureDirectory で使用しましたが、うまく機能しません。私の意見では、AzureDirectory は運用規模向けには作成されていません。

AzureDirectory のソース コードを見ると、以下が使用されています。

  • ベースとして古いバージョンの Lucene (2.3x)
  • どこでも例外がスローされます (本番環境で適切な例外をデバッグ/キャッチするのは困難です)
  • 古いストレージ API (SDK の 1.8 より前のバージョン) を使用します。

私は自分専用の仮想マシンを作成し、.net 3.0.3 Lucene.Net ライブラリを使用することになりました。AzureDirectory を実装する必要がないため、その環境ではチャンピオンのように機能します。

ストレージ キューで簡単に実装できる IndexWriter は 1 つだけにする必要があります。IndexReader プール (SQL 接続プールなど) への書き込みを制限したい場合は、複数の IndexReader を持つことができます。私はそれらの複数を正常に実行していますが、AzureDirectory のように例外はありません。

私の環境は、1 つの大規模なインデックスではなく、複数の小さなインデックスで構成されています。

于 2012-11-04T21:20:58.597 に答える
0

おそらくこれは人々が話している AzureDirectory であるかもしれませんが、そうではないかもしれません - パフォーマンスを向上させるためにこれを調整しました。これが運用レベルで堅実であるとは言いませんが、現在使用している AzureDirectory よりも役立つ場合があります。

それが役に立てば幸い、

于 2012-11-20T15:27:21.207 に答える