1. 程式人生 > >Lucene入門-如何編寫Lucene程序

Lucene入門-如何編寫Lucene程序

har creat ont parse ram open pen rec cor


Lucene版本:7.1


使用Lucene的關鍵點

  1. 創建文檔(Document),添加文件(Field);
  2. 把文檔加入IndexWriter;
  3. 使用QueryParser.parse()構建查詢內容;
  4. 使用IndexSearcher的search()方法,進行查詢;

一、創建索引基本流程

//open a Directory,存放索引文件
//FSDirectory指的是存放到文件夾,還可以存放到緩存RAMDirectory
//indexPath:文件路徑
Directory dir = FSDirectory.open(Paths.get(indexPath));
//instantiate Analyzer,處理文本文件
//StandardAnalyzer使用了Unicode文本分割算法,把符號轉成小寫,過濾出常用語
//不同語言需要使用不同的Analyzer,詳見:https://lucene.apache.org/core/7_1_0/analyzers-common/overview-summary.html
Analyzer analyzer = new StandardAnalyzer();
//索引配置內容
IndexWriterConfig iwc = new IndexWriterConfig(analyzer);
//CREATE,APPEND,CREATE_OR_APPEND
iwc.setOpenMode(OpenMode.CREATE);
//instantiate IndexWriter
IndexWriter writer = new IndexWriter(dir, iwc);
//instantiate Document,表示文件的文本內容及創建時間和位置信息等
Document doc = new Document();
//"path":索引字段
doc.add(new StringField("path", file.toString(), Field.Store.YES));
//doc.add(new LongPoint("modified", lastModified));
//doc.add(new TextField("contents", new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8))));
//添加到IndexWriter
writer.addDocument(doc);
//關閉
writer.close();


二、搜索基本流程

IndexReader reader = DirectoryReader.open(FSDirectory.open(Paths.get(index)));
IndexSearcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new StandardAnalyzer();
//索引字段
QueryParser parser = new QueryParser("contents", analyzer);
//查詢結果
Query query = parser.parse("123456");
TopDocs results = searcher.search(query, 5 * hitsPerPage);
ScoreDoc[] hits = results.scoreDocs;

Lucene入門-如何編寫Lucene程序