• lucene 4.4 demo


    ackage com.zxf.demo;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    
    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.StringField;
    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.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.store.Directory;
    import org.apache.lucene.store.FSDirectory;
    import org.apache.lucene.util.Version;
    
    
    
    public class LuceneForuDemo {
    static final String INDEXPATH = System.getProperty("user.dir") + "\index";
    static final String DATAPATH = System.getProperty("user.dir") + "\data";
    
    public static void main(String[] args) {
    try{
    LuceneForuDemo.indexDirectory();
    LuceneForuDemo.search();
    }catch (Exception e) {
    e.printStackTrace();
    }
    }
    
    /**
    * 建立索引
    * @throws Exception
    */
    public static void indexDirectory() throws Exception{
    File indexDir = new File(LuceneForuDemo.INDEXPATH);
    File dataDir = new File(LuceneForuDemo.DATAPATH);
    
    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_44);
    IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_44, analyzer);
    Directory dir = FSDirectory.open(indexDir);
    IndexWriter indexWriter = new IndexWriter(dir, iwc);
    
    File[] dataFiles = dataDir.listFiles();
    for (File file : dataFiles) {
    FileInputStream inStream = new FileInputStream(file);
    Document doc = new Document();
    Field fullFileName = new StringField("fullFileName", file.getCanonicalPath(),Field.Store.YES);
    doc.add(fullFileName);
    doc.add(new TextField("contents", new BufferedReader(
    new InputStreamReader(inStream, "UTF-8")
    )
    )
    );
    indexWriter.addDocument(doc);
    }
    indexWriter.close();
    }
    
    /*搜索*/
    public static void search() throws Exception{
    String field = "contents";
    String queryStr = "test"; //搜索的字符串
    File indexDir = new File(LuceneForuDemo.INDEXPATH);
    IndexReader reader = DirectoryReader.open(FSDirectory.open(indexDir));
    IndexSearcher searcher = new IndexSearcher(reader);
    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_44);
    QueryParser parser = new QueryParser(Version.LUCENE_44, field, analyzer);
    Query query = parser.parse(queryStr);
    System.out.println("Searching for: " + query.toString(field));
    TopDocs results = searcher.search(query, 50);
    ScoreDoc[] hits = results.scoreDocs;
    int numTotalHits = results.totalHits;
    System.out.println(numTotalHits + " total matching in documents");
    for(ScoreDoc sd:hits){
    Document doc = searcher.doc(sd.doc);
    System.out.println(doc.get("fullFileName"));
    }
    
    
    }
    }
    
  • 相关阅读:
    Shell学习笔记之shell脚本和python脚本实现批量ping IP测试
    SNMP学习笔记之SNMPv3的配置和认证以及TroubleShooting
    Web负载均衡学习笔记之四层和七层负载均衡的区别
    SNMP学习笔记之SNMP树形结构介绍
    Web负载均衡学习笔记之实现负载均衡的几种实现方式
    HCNP学习笔记之子网掩码的计算和划分详细
    HCNP学习笔记之IP地址、子网掩码、网关的关系
    Linux学习笔记之passwd:Authentication token manipulation error_错误的解决办法
    ubuntu 系统关键指令
    Jetson tk1 hash sum mismatch
  • 原文地址:https://www.cnblogs.com/sand-tiny/p/3935171.html
Copyright © 2020-2023  润新知