import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.store.SimpleFSDirectory;
import org.apache.lucene.util.Version;
import org.wltea.analyzer.lucene.IKAnalyzer;
public class FileIndexer {
private File baseDir = new File("E:\\dateDir");
private File indexDir2 = new File("E:\\indexDir");
Analyzer luceneAnalyzer = new IKAnalyzer();
Directory indexDir = null ;
public FileIndexer() {
if (!this.baseDir.exists() || !this.indexDir2.exists()) {
return;
}
}
@SuppressWarnings("deprecation")
public void createIndex() {
try {
/* IndexWriter writer = new IndexWriter(
FSDirectory.open(indexDir),
new IKAnalyzer(false),
true,
IndexWriter.MaxFieldLength.LIMITED);
indexDirectory(writer, baseDir);
writer.optimize();
writer.close();*/
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35,luceneAnalyzer);
indexDir=new SimpleFSDirectory(indexDir2);
config.setOpenMode(OpenMode.CREATE);
IndexWriter indexWriter = null;
indexWriter = new IndexWriter(indexDir,config);
Document doc1 = new Document();
doc1.add(new Field("id","1",Store.YES,Index.ANALYZED));
doc1.add(new Field("name","liangge",Store.YES,Index.ANALYZED));
doc1.add(new Field("content","中华人民共和国",Store.YES,Index.ANALYZED));
indexDirectory(indexWriter, baseDir);
indexWriter.addDocument(doc1);
indexWriter.close();
System.out.println("索引初始化完毕!");
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void indexDirectory(IndexWriter writer, File dir) {
if (!dir.exists() || !dir.isDirectory()) {
return;
}
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) indexDirectory(writer, file);
else indexFile(writer, file);
}
}
private void indexFile(IndexWriter writer, File file) {
if (file.isHidden() || !file.exists() || !file.canRead()) {
return;
}
try {
//if (file.getCanonicalPath().endsWith(".txt")) {
System.out.println("路径" + file.getCanonicalPath());
Document doc = new Document();
doc.add(new Field("content",
new InputStreamReader(new FileInputStream(file),"GBK")));
doc.add(new Field("name",
file.getCanonicalPath(),
Field.Store.YES, Field.Index.ANALYZED));
writer.addDocument(doc);
//}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
FileIndexer lucene = new FileIndexer();
lucene.createIndex();
}
}