我正在使用Lucene创建一个基于概念的图像搜索引擎。首先,我打开我的数据库并将其复制到RAM索引中。然后我写一个分析器来查找用户输入字及其同义词。最后,我想打开索引来获得结果。
getImage() - 用于将addDoc()复制数据库调用到我的索引
这是getImageResult(),我想用它来获得结果。我想也许这就是错误。
但是,如果我删除:
StandardAnalyzer analyzer = new StandardAnalyzer();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter iwriter = new IndexWriter(index, config);
iwriter.commit();
它会引发异常:在RAMDirectory中找不到segment *文件。 如果我保留这部分,我就无法得到任何结果。
答案 0 :(得分:0)
我不完全确定,但我认为你试图用你的第一个片段写入索引,然后用第二个片段搜索,对吗?
您在全新目录中打开全新索引的getImageResult()
方法。之前写入不同RAMDirectory
的任何内容都无法在那里搜索。
你应该:
RAMDirectory
或FSDirectory
中打开索引,将其保存到文件系统,然后重新打开。请参阅FSDirectory.open