3

私は、GoogleAppEngineでluceneインデックスを機能させることに取り組んでいます。ramdirectoryを使用してインデックスを作成し、それ(ramdirectoryオブジェクト)を永続ストレージ用のmemcacheとblobstoreにシリアル化します。 http://code.google.com/appengine/docs/java/blobstore/overview.html#Writing_Files_to_the_Blobstore 検索の場合は、逆シリアル化して検索に使用します。

インデックスライターを閉じると、nullポインター例外が発生します。

これは、GoogleAppEngineでサポートされているライブラリが次のとおりであるという事実と関係があるのではないかと思います。 http://code.google.com/appengine/docs/java/jrewhitelist.html

lucene3.5.0とAppEngineJavaバージョン1.6.1を使用しています

以下は私が取得したスタックトレースです

java.lang.NullPointerException
at org.apache.lucene.store.DataOutput.writeString(DataOutput.java:103)
at org.apache.lucene.store.DataOutput.writeStringStringMap(DataOutput.java:189)
at org.apache.lucene.index.SegmentInfo.write(SegmentInfo.java:623)
at org.apache.lucene.index.SegmentInfos.write(SegmentInfos.java:394)
at org.apache.lucene.index.SegmentInfos.prepareCommit(SegmentInfos.java:872)
at org.apache.lucene.index.IndexWriter.startCommit(IndexWriter.java:4601)
at org.apache.lucene.index.IndexWriter.prepareCommit(IndexWriter.java:3453)
at org.apache.lucene.index.IndexWriter.commitInternal(IndexWriter.java:3524)
at org.apache.lucene.index.IndexWriter.closeInternal(IndexWriter.java:1879)
at org.apache.lucene.index.IndexWriter.close(IndexWriter.java:1822)
at org.apache.lucene.index.IndexWriter.close(IndexWriter.java:1786)

コードはローカルマシンで正しく機能します(コードをあまり追加しておらず、サンプルドキュメントをいくつか追加して、indexwriter.close()を実行しました)

誰かが以前にこの問題に直面したことがありますか?もしそうなら、それに対する回避策はありますか?

私が問題を見つけているコードは単純です

RAMDirectory dir = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35));
IndexWriter writer = new IndexWriter(dir,config); 
Document doc;
doc = new Document();
doc.add(new Field("text","mary had a little lamb", Store.YES, Index.ANALYZED));
writer.addDocument(doc)
writer.close();

最後の行でライターを閉じようとすると、例外がスローされます

4

1 に答える 1

3

問題は、何らかの理由でLuceneがos.versionとos.archをインデックスに格納しようとすることです。

理由はわかりませんが、解決策はappengine-web.xmlにプロパティを追加することです。

<system-properties>
    <property name="os.version" value="1.0.GAE whatever" />
    <property name="os.arch" value="GAE whatever" />
</system-properties>

そしてそれはあなたのために働くでしょう。お役に立てば幸いです:)

于 2012-02-16T15:48:31.763 に答える