gpt4 book ai didi

google-app-engine - indexwriter.close 中的空指针异常(在谷歌应用引擎中使用 ramdirectory)

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:39 25 4
gpt4 key购买 nike

我正在努力让 lucene 索引在 Google App Engine 上运行。我正在使用 ramdirectory 来创建索引,然后将其(ramdirectory 对象)序列化到 memcache 和 blobstore 以进行持久存储。 http://code.google.com/appengine/docs/java/blobstore/overview.html#Writing_Files_to_the_Blobstore对于搜索,我只是反序列化它并在我的搜索中使用。

当我关闭索引编写器时遇到空指针异常。

我认为这可能与谷歌应用引擎仅支持以下库这一事实有关。 http://code.google.com/appengine/docs/java/jrewhitelist.html

我正在使用 lucene 3.5.0 和 App Engine java 版本 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();

当我试图在最后一行关闭编写器时抛出异常

最佳答案

问题是出于某种原因,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>

它会为你工作。希望有所帮助:)

关于google-app-engine - indexwriter.close 中的空指针异常(在谷歌应用引擎中使用 ramdirectory),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8966135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com