package com.royarn.luceneNew; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.TextField; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.queryparser.classic.ParseException; import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TopDocs; import org.apache.lucene.search.spell.Dictionary; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Date; /** * * @author lizq_cti_sx * @create 2017-12-05 9:45 * @deprecated */ public class IndexProcesser { /** * 构建索引 * @throws IOException */ public void addFile() throws IOException { final Path path = Paths.get("D:\\Documents\\Downloads\\newIndex"); Directory directory = FSDirectory.open(path); Analyzer analyzer = new StandardAnalyzer(); IndexWriterConfig config = new IndexWriterConfig(analyzer); config.setOpenMode(IndexWriterConfig.OpenMode.CREATE); IndexWriter writer = new IndexWriter(directory, config); BufferedReader reader = new BufferedReader(new FileReader(new File("D:\\Documents\\Downloads\\bookName.txt"))); String content = ""; while ((content = reader.readLine()) != null) { Document document = new Document(); document.add(new TextField("logs", content, Field.Store.YES)); document.add(new TextField("time", String.valueOf(new Date().getTime()), Field.Store.YES)); writer.addDocument(document); } writer.close(); } /** * * @throws IOException * @throws ParseException * @description 单一查询条件 & */ public void searchFiles() throws IOException, ParseException { String queryStr = "紫罗兰"; final Path path = Paths.get("D:\\Documents\\Downloads\\newIndex"); Directory directory = FSDirectory.open(path); Analyzer analyzer = new StandardAnalyzer(); IndexReader reader = DirectoryReader.open(directory); IndexSearcher searcher = new IndexSearcher(reader); //单条件 QueryParser parser = new QueryParser("logs", analyzer); Query query = parser.parse(queryStr); TopDocs docs = searcher.search(query, 1); long count = docs.totalHits; System.out.println("检索总条数:" + count); ScoreDoc[] scoreDocs = docs.scoreDocs; for (ScoreDoc doc: scoreDocs) { Document document = searcher.doc(doc.doc); System.out.print("相关度:" + doc.score + "------time:" + document.get("time")); System.out.println(document.get("logs")); } } //主函数 public static void main(String[] args) { IndexProcesser processer = new IndexProcesser(); try { processer.addFile(); processer.searchFiles(); } catch (IOException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } } }
Lucene7.1.0学习
猜你喜欢
转载自blog.csdn.net/lzqworkonline/article/details/78750965
今日推荐
周排行