lucene主要功能未找到

时间:2014-10-15 21:29:01

标签: java lucene

我正在为我的文本分析项目运行lucene库(我对java比较新)。主要功能(或命令)有问题。

我使用的lucene版本是3.0.0,并且已经编译成JAR文件。 JAR文件与主类文件Indexer.java位于同一文件夹中。

我首先运行编译代码:

javac -cp \lucene-core-3.0.0.jar Indexer.java

并且它正常工作并在同一目录中创建了Indexer.class文件。

然后我运行相同的命令:

java -cp \lucene-core.3.0.0.jar Indexer

这次命令行输出显示我没有主类Indexer:

could not find or load main class Indexer

我检查了原始java代码,定义了主要方法:

import org.apache.lucene.index.*;

import java.io.IOException;
import java.io.File;


import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.analysis.standard.*;
import org.apache.lucene.util.Version;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;

import java.io.FileReader;


public class Indexer {

private IndexWriter writer;

private void indexFile(File f) throws Exception{
    System.out.println("Indexing " + f.getCanonicalPath());
    Document doc = getDocument(f);
    if(doc != null){
        writer.addDocument(doc);
    }
}

public Indexer(String IndexDir) throws IOException{
    Directory dir = FSDirectory.open(new File(IndexDir));
    writer = new IndexWriter(dir,new StandardAnalyzer(Version.LUCENE_30),
                                        true,IndexWriter.MaxFieldLength.UNLIMITED);
}


protected Document getDocument(File f) throws Exception{
    Document doc = new Document();

    doc.add(new Field("contents", new FileReader(f)));
    doc.add(new Field("filename",
                        f.getName(), 
                        Field.Store.YES,
                        Field.Index.NOT_ANALYZED));
    doc.add(new Field("fullpath",
                        f.getCanonicalPath(),
                        Field.Store.YES,
                        Field.Index.NOT_ANALYZED));
    return doc;
}

protected boolean acceptFile(File f){
    return f.getName().endsWith(".txt");
}


public int index(String dataDir) throws Exception{

    File[] files = new File(dataDir).listFiles();


    for(int i = 0; i < files.length;i++){
        File f = files[i];

        if(!f.isDirectory() 
            && !f.isHidden() 
            && f.exists()
            && f.canRead()
            && acceptFile(f)){
            indexFile(f);
        }
    }
    return writer.numDocs();
}

public void close() throws IOException{
    writer.close();
}

public static void main(String[] args) throws Exception{
    if(args.length != 2){
        throw new Exception("Usage: java " + Indexer.class.getName()+" <index dir><data dir");
    }

    String indexDir = args[0];
    String dataDir = args[1];

    long start = System.currentTimeMillis();
    Indexer indexer = new Indexer(indexDir);
    int numIndexed = indexer.index(dataDir);
    indexer.close();
    long end = System.currentTimeMillis();

    System.out.println("Indexing " + 
            numIndexed + " files took " + (end-start)+ " milliseconds.");


}

}

我的代码/命令出了什么问题?

1 个答案:

答案 0 :(得分:0)

当显式指定jvm时,jvm不包括运行时类路径中的当前目录。尝试

java -cp ".:lucene-core.3.0.0.jar" Indexer