0

UbuntuでRubyonRailsアプリケーションを実行しようとしています。Xapianを使用してドキュメントを検索します。Gemfileの指示に従って、すでにxapian-fullGemをバージョンにインストールし、Xapianデータベースが存在する可能性のあるディレクトリを作成しました。1.1.3.4files/default

database = Xapian::Database.new('files/default');

コードがこの行に到達するとすぐに、エラーが発生します。

SearchController#indexのIOError

DatabaseOpeningError:データベースのタイプを検出できませんでした

データベースなどを初期化する必要がありますか?Xapian Docsを調べて、インターネットでエラーメッセージを検索しましたが、どれも役に立ちませんでした。

4

1 に答える 1

0

(Xapianの知識を使用してこの回答を記述しますが、xapian-full Gemは記述しないため、一部の詳細が間違っている可能性がありますが、エラーはXapianから発生しているため、これは正しい行にあると確信しています。)

エラーは、ディレクトリを作成したためですfiles/default。代わりに、filesディレクトリを作成し、Xapianを実行しているプロセスにそのディレクトリへの書き込み権限があることを確認してください。

Xapianがここでエラーを発生させるのはなぜですか?Xapianデータベースは、特別なファイルのセットを含むディレクトリだけで構成されているためです。がXapian::Database.new呼び出されると、新しいデータベースを作成する前に、データベースがすでに存在するかどうかを確認します。デフォルトのオープンモードでは、データベースディレクトリがすでに存在する場合、そこにあるものを新しいデータベースで上書きしてはならないと想定するため、既存のデータベースを開こうとします。ディレクトリが空であるため、これにより、表示されるエラーがスローされます。

于 2012-05-17T01:47:56.937 に答える