lucene 3.0的练习

//建立索引的类,把目录下的文件内容都加载到内存,

public class TxtFileIndexer {

      public static void main(String[] args) throws Exception{   

             //indexDir is the directory that hosts Lucene's index files   

            //目标存放路径

             Directory   indexDir =FSDirectory.open(new File("D:\\feng"));  

             //dataDir is the directory that hosts the text files that to be indexed   

            //指定索引路径

             File   dataDir  = new File("D:\\feng\\oracle");   
             Analyzer luceneAnalyzer = new StandardAnalyzer(Version.LUCENE_30);   
             File[] dataFiles  = dataDir.listFiles();   
             IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true,IndexWriter.MaxFieldLength.UNLIMITED);   
             long startTime = new Date().getTime();   
             for(int i = 0; i < dataFiles.length; i++){   
                  if(dataFiles[i].isFile() && dataFiles[i].getName().endsWith(".txt")){  
System.out.println("Indexing file " + dataFiles[i].getCanonicalPath());   
                       Document document = new Document();   
                       document.add(new Field("fileName", dataFiles[i].getName(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                       document.add(new Field("content", new InputStreamReader(new FileInputStream(dataFiles[i].getCanonicalPath()), "utf-8")));  
                       indexWriter.addDocument(document);   
                  }   
             }   
             // optimize()方法是对索引进行优化,进行了索引优化后,索引才算是真正的生效。  
             indexWriter.optimize();   
             indexWriter.close();   
             long endTime = new Date().getTime();   
             System.out.println("It takes " + (endTime - startTime)   
                 + " milliseconds to create index for the files in directory " 
                 + dataDir.getPath());          

     }

//在建立好的索引上进行搜索类,

public class TxtFileSearcher {
    public static void main(String[] args) throws Exception{   
        String indexDir = "D:\\feng";  
        String queryStr = "Database"; 
        Directory dir = FSDirectory.open(new File(indexDir));  
        IndexSearcher is = new IndexSearcher(dir);   

        if(!indexDir.exists()){   
            System.out.println("The Lucene index is not exist");   
            return;   
        }  
        QueryParser parser = new QueryParser(Version.LUCENE_30, "content", new StandardAnalyzer(Version.LUCENE_30));  
        Query query = parser.parse(queryStr);  
        long start = System.currentTimeMillis(); 
        TopDocs hits = is.search(query, 10); 
        long end = System.currentTimeMillis(); 
        System.out.println("find " + hits.totalHits+"耗时:"+(end-start));  
        for (ScoreDoc scoreDoc : hits.scoreDocs) {
            Document doc = is.doc(scoreDoc.doc);  
            System.out.println(doc.get("fileName"));  
        }  
        is.close();  

     }   
}

转载于:https://my.oschina.net/aicoding/blog/71090

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值