您的位置:首页 > 其它

lucene学习之一(简单的demo)

2017-02-08 16:40 288 查看
使用的lucene版本5.5.3

1 package nyx.test;
2
3 import java.io.File;
4 import java.io.FileReader;
5 import java.io.IOException;
6 import java.nio.file.Paths;
7
8 import org.apache.lucene.analysis.Analyzer;
9 import org.apache.lucene.analysis.standard.StandardAnalyzer;
10 import org.apache.lucene.document.Document;
11 import org.apache.lucene.document.Field.Store;
12 import org.apache.lucene.document.TextField;
13 import org.apache.lucene.index.DirectoryReader;
14 import org.apache.lucene.index.IndexWriter;
15 import org.apache.lucene.index.IndexWriterConfig;
16 import org.apache.lucene.queryparser.classic.ParseException;
17 import org.apache.lucene.queryparser.classic.QueryParser;
18 import org.apache.lucene.search.IndexSearcher;
19 import org.apache.lucene.search.Query;
20 import org.apache.lucene.search.ScoreDoc;
21 import org.apache.lucene.search.TopDocs;
22 import org.apache.lucene.store.Directory;
23 import org.apache.lucene.store.FSDirectory;
24
25 public class LuceneTest {
26     public void index(){
27         IndexWriter indexWriter = null;
28         try {
29             Analyzer analyzer = new StandardAnalyzer();
30             Directory directory = FSDirectory.open(Paths.get("d:/index"));
31             //创建内存的索引就用RAM索引
32             //创建IndexWriter
33             IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
34             indexWriter = new IndexWriter(directory, indexWriterConfig);
35             Document doc = null;
36             File file = new File("D:/xz");
37             for (File f : file.listFiles()) {
38                 doc = new Document();
39                 doc.add(new TextField("content", new FileReader(f)));
40                 doc.add(new TextField("fieldname", f.getName(), Store.YES));
41                 doc.add(new TextField("path", f.getAbsolutePath(),Store.YES));
42                 indexWriter.addDocument(doc);
43             }
44         } catch (IOException e) {
45             e.printStackTrace();
46         } finally {
47             try {
48                 if(indexWriter!=null)
49                     indexWriter.close();
50             } catch (Exception e) {
51                 e.printStackTrace();
52             }
53         }
54     }
55
56     public void search() {
57         try {
58             Analyzer analyzer = new StandardAnalyzer();
59             Directory directory = FSDirectory.open(Paths.get("d:/index"));
60             DirectoryReader reader = DirectoryReader.open(directory);
61             IndexSearcher searcher = new IndexSearcher(reader);
62             QueryParser parser = new QueryParser("content", analyzer);
63             Query query = parser.parse("宁静");
64             TopDocs docs = searcher.search(query, 10);
65             for (ScoreDoc doc : docs.scoreDocs) {
66                 Document document = searcher.doc(doc.doc);
67                 System.out.println("文件名:"+"["+document.get("fieldname")+"]");
68                 System.out.println("文件路径:"+"["+document.get("path")+"]");
69             }
70         } catch (IOException e) {
71             e.printStackTrace();
72         } catch (ParseException e) {
73             e.printStackTrace();
74         }
75
76     }
77 }


结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: