Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 276|回复: 0

[Java框架学习]lucene入门实例(2):索引目录下的网页

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-4 00:00:27 | 显示全部楼层 |阅读模式
    一、创建索引
    package bindex;
    import java.io.File;
    import tool.FileText;
    import tool.FileList;
    import java.io.*;
                                                                                        
    import org.apache.lucene.document.Document;
    import org.apache.lucene.document.Field;
    import org.apache.lucene.index.CorruptIndexException;
    import org.apache.lucene.index.IndexWriter;
    import org.apache.lucene.store.LockObtainFailedException;
    import org.apache.lucene.analysis.standard.StandardAnalyzer;
    public class FileIndexer {  /**
       * @param args
       */
      
      
        public static void main(String[] args) {
       // TODO Auto-generated method stub
             String indexPath ="indexes";
             try {      
       IndexWriter indexWriter = new IndexWriter(indexPath,new StandardAnalyzer());
             String[] files=FileList.getFiles("HTMLs");
             int num=files.length;
             for(int i=0;i<num;i++){
                 Document doc=new Document();   
                 File f=new File(files);
                
                 String name=f.getName();
                 String content=FileText.getText(f);
                 String path=f.getPath();
                 Field field=new Field("name",name,Field.Store.YES,Field.Index.TOKENIZED);
                 doc.add(field);
                 field=new Field("content",content,Field.Store.YES,Field.Index.TOKENIZED);
                 doc.add(field);
                 field=new Field("path",path,Field.Store.YES,Field.Index.NO);
                 doc.add(field);
                 indexWriter.addDocument(doc);  
                 System.out.println("File:"+path+name+" indexed!");
             }
          System.out.println("OK!");
          indexWriter.close();
      } catch (CorruptIndexException e) {
        // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (LockObtainFailedException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      } }

    运行结果: File:htmlswy360安全中心 - 360安全卫士官网 - 360安全卫士下载免费杀毒木马查杀杀木马电脑安全恶意软件查杀流氓软件查杀.htm360安全中心 - 360安全卫士官网 - 360安全卫士下载免费杀毒木马查杀杀木马电脑安全恶意软件查杀流氓软件查杀.htm indexed!
    File:htmls腾讯首页11.htm腾讯首页11.htm indexed!
    OK!

    二、查找 package bindex;
    import java.io.IOException;
    import java.lang.StringBuffer; import org.apache.lucene.index.*;
    import org.apache.lucene.search.*;
    import org.apache.lucene.document.*;
    import org.apache.lucene.analysis.standard.StandardAnalyzer; public class BindexSearcher {
       
      /**
       * @param args
       */
      public static void main(String[] args) {
       // TODO Auto-generated method stub
          String indexPath="indexes";
          String searchField="content";
          String searchPhrase="迅";
          StringBuffer sb=new StringBuffer("");
          
          try {
        IndexSearcher searcher=new IndexSearcher(indexPath);
        Term t=new Term(searchField,searchPhrase);
        Query q=new TermQuery(t);
        Hits hs=searcher.search(q);
        int num=hs.length();
        for (int i=0;i<num;i++){
         Document doc=hs.doc(i);
         Field fname=doc.getField("name");
         Field fcontent=doc.getField("content");   
         sb.append("name:
    ");
         sb.append(fname.stringValue()+"
    ");
         sb.append("content:
    ");
         sb.append(fcontent.stringValue().substring(0, 100)+"
    ");
         sb.append("------------"+"
    ");   
        }
        searcher.close();
        System.out.println(sb);   
       } catch (CorruptIndexException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
      } }

    运行结果:
    name:
    腾讯首页11.htm
    content:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html4
    ------------


    三、查找另一内容
    package bindex;
    import java.io.IOException;
    import java.lang.StringBuffer; import org.apache.lucene.index.*;
    import org.apache.lucene.search.*;
    import org.apache.lucene.document.*;
    import org.apache.lucene.analysis.standard.StandardAnalyzer; public class BindexSearcher {
       
      /**
       * @param args
       */
      public static void main(String[] args) {
       // TODO Auto-generated method stub
          String indexPath="indexes";
          String searchField="content";
          String searchPhrase="360";
          StringBuffer sb=new StringBuffer("");
          
          try {
        IndexSearcher searcher=new IndexSearcher(indexPath);
        Term t=new Term(searchField,searchPhrase);
        Query q=new TermQuery(t);
        Hits hs=searcher.search(q);
        int num=hs.length();
        for (int i=0;i<num;i++){
         Document doc=hs.doc(i);
         Field fname=doc.getField("name");
         Field fcontent=doc.getField("content");   
         sb.append("name:
    ");
         sb.append(fname.stringValue()+"
    ");
         sb.append("content:
    ");
         sb.append(fcontent.stringValue().substring(0, 100)+"
    ");
         sb.append("------------"+"
    ");   
        }
        searcher.close();
        System.out.println(sb);   
       } catch (CorruptIndexException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
      } }

    运行结果: name:
    360安全中心 - 360安全卫士官网 - 360安全卫士下载免费杀毒木马查杀杀木马电脑安全恶意软件查杀流氓软件查杀.htm
    content:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html4
    ------------

    四、工具类 package tool;
    import java.io.*; public class FileText {  /**
       * @param args
       */
         public static String getText(File f){
          
          StringBuffer sb=new StringBuffer("");
          try{
           FileReader fr=new FileReader(f);
           BufferedReader br=new BufferedReader(fr);
           String s=br.readLine();
           while(s!=null){
            sb.append(s);
            s=br.readLine();
           }
           br.close();
          }     
          catch (Exception e){
           sb.append("");      
          }
       return sb.toString();
         }
         public static String getText(String s){
          String t="";
          try{
           File f=new File(s);
           t=getText(f);
          }
          catch (Exception e){
           t="";
          }
          return t;
         }
         public static void main(String[] args) throws IOException{
          String s=FileText.getText("htmls/home.htm");
          System.out.println(s);
         }
    } package tool;
    import java.io.*;; //返回某个目录下的所有文件
    public class FileList{
        private static final String SEP="/";
        private static StringBuffer sb=new StringBuffer("");
       
        public static String[] getFiles(File f) throws IOException{
         if(f.isDirectory()){
          File[] fs=f.listFiles();
          for(int i=0;i<fs.length;i++){
           getFiles(fs);
          }
         }
         else{
          sb.append(f.getPath()+SEP);
         }
         String s=sb.toString();
         String[] list=s.split(SEP);
         return list;
        }
       
        public static String[] getFiles(String  t) throws IOException{
         
         File f=new File(t);
         if(f.isDirectory()){
          File[] fs=f.listFiles();
          for(int i=0;i<fs.length;i++){
           getFiles(fs);
          }
         }
         else{
          sb.append(f.getPath()+SEP);
         }
         String s=sb.toString();
         String[] list=s.split(SEP);
         return list;
        }        
    }

       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/11/4/000026703.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 13:51 , Processed in 0.365597 second(s), 48 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表