Lucene7.1.0学习

来源:互联网 发布:歌曲剪辑合成软件 编辑:程序博客网 时间:2024/05/21 00:18
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();        }    }}
原创粉丝点击