zoukankan      html  css  js  c++  java
  • 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"));
    }
    
    
    }
    }
    
  • 相关阅读:
    Frequency of String CodeForces
    Sign on Fence CodeForces
    洛谷 P3332 [ZJOI2013]K大数查询 || bzoj3110
    spoj DYNALCA
    洛谷 P2824 [HEOI2016/TJOI2016]排序 (线段树合并)
    洛谷 P3203 [HNOI2010]弹飞绵羊 || bzoj2002
    bzoj 1036: [ZJOI2008]树的统计Count
    Shiro Authenticator认证器
    Shiro 十分钟教程
    Shiro 架构
  • 原文地址:https://www.cnblogs.com/sand-tiny/p/3935171.html
Copyright © 2011-2022 走看看