Lucene indexwriter目标文件夹

时间:2011-07-07 07:44:12

标签: java lucene indexing

我正在开发一个小的lucene项目,我必须索引一堆文本文件。到目前为止,我已经设法创建了索引,我想。代码运行,我得到一堆名为0 _。 * fdt / fdx / fnm等的文件。

我想知道的是,我可以选择目标文件夹,以便创建索引吗?

我正在关注这个Guide并且我定义了一个索引文件夹和一个索引文件夹的文件,但我找不到indexwriter构造函数中的任何参数,可以实现这一点。

这是我创建索引的代码

public static void createIndex() throws CorruptIndexException, LockObtainFailedException, IOException {
    File[] files = FILES_TO_INDEX_DIRECTORY.listFiles();
    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_33);
    SimpleFSDirectory d = new SimpleFSDirectory(FILES_TO_INDEX_DIRECTORY);
    IndexWriter indexWriter = new IndexWriter(d, analyzer, IndexWriter.MaxFieldLength.LIMITED);

    for (File file : files) {
        Document document = new Document();

        String path = file.getCanonicalPath();
        byte[] bytes = path.getBytes();
        document.add(new Field(FIELD_PATH, bytes));

        Reader reader = new FileReader(file);
        document.add(new Field(FIELD_CONTENTS, reader));

        indexWriter.addDocument(document);
    }
    indexWriter.optimize();
    indexWriter.close();
}

我正在使用类型File而不是字符串作为目录

public static File FILES_TO_INDEX_DIRECTORY = new File("C:\\Users\\k\\Dropbox\\Public\\afgansprojekt\\RouteLogger\\Lucene\\FilesToIndex");
public static final File INDEX_DIRECTORY = new File("C:\\Users\\k\\Dropbox\\Public\\afgansprojekt\\RouteLogger\\Lucene\\Index");

1 个答案:

答案 0 :(得分:1)

实际上您正在使用SimpleFSDirectory d = new SimpleFSDirectory(FILES_TO_INDEX_DIRECTORY);

设置目标文件夹

只需将SimpleFSDirectory(FILES_TO_INDEX_DIRECTORY);更改为SimpleFSDirectory(INDEX_DIRECTORY);

编辑:

File[] files = FILES_TO_INDEX_DIRECTORY.listFiles(); //this is where you set the files to index

SimpleFSDirectory d = new SimpleFSDirectory(FILES_TO_INDEX_DIRECTORY); //here you are setting the index directory

您应该将此行更改为SimpleFSDirectory d = new SimpleFSDirectory(INDEX_DIRECTORY);