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"));
    }
    
    
    }
    }
    
  • 相关阅读:
    上周热点回顾(3.13.7)
    博客园电子期刊2010年1月刊发布啦
    博客园电子期刊2010年2月刊发布啦
    上周热点回顾(2.222.28)
    Android 专题上线
    聊聊2010年春晚
    上周热点回顾(3.83.14)
    博客园上海俱乐部活动通知(20100320)
    上周热点回顾(2.12.7)
    博客园图灵杯第4届博问大赛(2010.2.27~2010.3.27)
  • 原文地址:https://www.cnblogs.com/sand-tiny/p/3935171.html
Copyright © 2011-2022 走看看