Java 如何在src/main/resources中构建Lucene索引?

Java 如何在src/main/resources中构建Lucene索引?,java,indexing,lucene,resources,Java,Indexing,Lucene,Resources,我正在编写一个java程序,其中我必须用Lucene构建一个索引,然后从中读取。最后,我构建了一个包含所有依赖项的jar,因为我必须从shell的另一个程序调用它 我在用Lucene的目录。Lucene的FSDirectory对于读取和写入索引非常有用。但是,它的构造函数将路径作为输入。是FSDirectory的java文档 当我通常从参考资料中读取文件时,我使用以下方法: InputStream is = ResourceReader.class.getClassLoader().getRes

我正在编写一个java程序,其中我必须用Lucene构建一个索引,然后从中读取。最后,我构建了一个包含所有依赖项的jar,因为我必须从shell的另一个程序调用它

我在用Lucene的目录。Lucene的FSDirectory对于读取和写入索引非常有用。但是,它的构造函数将路径作为输入。是FSDirectory的java文档

当我通常从参考资料中读取文件时,我使用以下方法:

InputStream is = ResourceReader.class.getClassLoader().getResourceAsStream("filename.extension");

然而,正如我上面所说的,FSDirectory的构造函数需要一个路径。但是如何给它一个路径,考虑到我要生产一个罐子?

我在我的一个项目中遇到了同样的问题,这解决了我的问题:

FSDirectory luceneIndex = new SimpleFSDirectory(Paths.get("where_you_want_to_store_the_index"));
如果是“src/main/resources”并且您必须创建一个jar,那么您在“where\u you\u want\u存储索引”中放了什么?如果您运行一个项目,使用“lucene”将索引存储在项目的根目录下。然后可以部署应用程序,索引将存储在jar旁边的“lucene”目录中。我认为它可以使用“src/main/resources”工作,只要试一下就可以了。另一种可能是将索引存储在用户主目录中,这样它就不会依赖于应用程序的位置。