我正在开发一个应用程序,可以在大型静态数据存储库中启用索引搜索。这是不服务器客户端应用程序,其中服务器始终处于启动状态,但是每次按需启动的本机应用程序。
我想将存储库中的文件编入索引一次,并将我的工作保存到文件中。然后,我希望我的应用程序的每个用户都能够从保存的文件中加载已创建的索引。
我在“Lucene in 5 Minutes”中看到了以下基本的索引创建代码:
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_40);
Directory index = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_40, analyzer);
IndexWriter w = new IndexWriter(index, config);
addDoc(w, "Lucene in Action", "193398817");
addDoc(w, "Lucene for Dummies", "55320055Z");
addDoc(w, "Managing Gigabytes", "55063554A");
addDoc(w, "The Art of Computer Science", "9900333X");
w.close();
private static void addDoc(IndexWriter w, String title, String isbn) throws IOException {
Document doc = new Document();
doc.add(new TextField("title", title, Field.Store.YES));
doc.add(new StringField("isbn", isbn, Field.Store.YES));
w.addDocument(doc);
}
答案 0 :(得分:3)
我有一个解决方案 - 我将在这里与您分享:
应该采取整体更改,而不是使用FSDirectory
索引,只需使用FSDirectory index = FSDirectory.open(Paths.get("C:\\temp\\index.lucene"));
。
示例:
C:\temp\index.lucene
在上面的示例中,将创建目录{{1}}并将索引写入其中。
现在我可以按照“Lucene in 5 Minutes”中所示的步骤查询索引: http://www.lucenetutorial.com/lucene-in-5-minutes.html
所以,如果我想在另一个应用程序中运行查询,我应该以相同的方式打开索引,我可以立即对它运行查询...无需再次索引文档...