1 import java.io.File;
2 import java.io.FileReader;
3 import java.io.IOException;
4 import java.nio.file.Paths;
5 import java.util.Random;
6
7 import org.apache.lucene.analysis.standard.StandardAnalyzer;
8 import org.apache.lucene.document.Document;
9 import org.apache.lucene.document.Field;
10 import org.apache.lucene.document.IntField;
11 import org.apache.lucene.document.LongField;
12 import org.apache.lucene.document.NumericDocValuesField;
13 import org.apache.lucene.index.IndexWriter;
14 import org.apache.lucene.index.IndexWriterConfig;
15 import org.apache.lucene.store.Directory;
16 import org.apache.lucene.store.FSDirectory;
17
18 public class FileIndexUtils {
19 private static Directory directory = null;
20 static{
21 try {
22 directory = FSDirectory.open(Paths.get("D://lucene//document"));
23 } catch (Exception e) {
24 // TODO: handle exception
25 e.printStackTrace();
26 }
27 }
28 public static Directory getDirectory(){
29 return directory;
30 }
31 /**
32 * 创建索引
33 * @param hasNew
34 */
35 @SuppressWarnings("deprecation")
36 public static void createIndex(boolean hasNew){
37 IndexWriter writer = null;
38 try {
39 writer = new IndexWriter(directory, new IndexWriterConfig(new StandardAnalyzer()));
40 if(hasNew){
41 writer.deleteAll();
42 }
43
44 Document document = null;
45 int index = 0;
46 //随机数,为排序数字
47 Random random = new Random();
48 //为源文件创建索引
49 File file = new File("D://text");
50 for(File f:file.listFiles()){
51 int score = random.nextInt();
52 document = new Document();
53 document.add(new Field("id",String.valueOf(index++), Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS));
54 document.add(new Field("content",new FileReader(f)));
55 document.add(new Field("fileName",f.getName(),Field.Store.YES,Field.Index.NOT_ANALYZED));
56 document.add(new Field("path",f.getPath(),Field.Store.YES,Field.Index.NOT_ANALYZED));
57 document.add(new IntField("score",score,Field.Store.YES));
58 document.add(new NumericDocValuesField("size",(long)f.length()));
59 document.add(new LongField("size", f.length(), Field.Store.YES));
60 document.add(new IntField("date",(int) f.lastModified(),Field.Store.YES));
61 writer.addDocument(document);
62 }
63 } catch (Exception e) {
64 // TODO: handle exception
65 e.printStackTrace();
66 }finally{
67 if(writer!=null){
68 try {
69 writer.close();
70 } catch (IOException e) {
71 // TODO Auto-generated catch block
72 e.printStackTrace();
73 }
74 }
75 }
76 }
77 }