`

lucence网页索引建立

阅读更多

 

一、创建索引
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[i]);
            
            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:htmls\wy\360安全中心 - 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:\n");
    sb.append(fname.stringValue()+"\n");
    sb.append("content:\n");
    sb.append(fcontent.stringValue().substring(0, 100)+"\n");
    sb.append("------------"+"\n");    
   }
   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:\n");
    sb.append(fname.stringValue()+"\n");
    sb.append("content:\n");
    sb.append(fcontent.stringValue().substring(0, 100)+"\n");
    sb.append("------------"+"\n");    
   }
   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[i]);
     }
    }
    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[i]);
     }
    }
    else{
     sb.append(f.getPath()+SEP);
    }
    String s=sb.toString();
    String[] list=s.split(SEP);
    return list;
   }        
}

 

分享到:
评论

相关推荐

    lucene全文检索简单索引和搜索实例

    1. 文档(Document):在Lucene中,一个文档代表了要索引的信息源,它可以是网页、电子邮件、PDF文档等。文档由多个字段(Field)组成,每个字段具有不同的含义和处理方式。 2. 字段(Field):字段是文档的组成...

    基于lucene的索引与搜索

    在Lucene中,索引过程包括分词、建立倒排索引以及存储相关元数据。倒排索引是Lucene的核心,它允许快速定位包含特定词汇的文档。搜索则通过查询解析、评分以及结果排序来实现,提供高效的检索性能。 2.2.3 Web...

    Lucene索引器实例

    以上就是Lucene索引器实例的基本介绍,通过这个实例,我们可以理解到如何使用Lucene来创建、管理和搜索文本索引。在实际项目中,可以根据需求选择合适的存储(如硬盘目录或分布式存储)、优化分析器配置、处理大量...

    lucene并行索引

    为了应对每天新增的大量网页数据,该公司决定采用基于Lucene的分布式并行索引技术。具体步骤如下: 1. **需求分析**:根据业务需求,确定索引构建的目标和规模。 2. **架构设计**:设计基于Lucene的分布式并行索引...

    lucene索引结构原理.docx

    【Lucene 索引结构原理】 Lucene 是一个高性能、全文检索的开源...在Lucene中,这个过程包括分析文本、创建倒排索引等步骤,使得搜索操作从线性时间复杂度转变为对数时间复杂度,显著提高了大规模文本数据的检索速度。

    Lucene5学习之创建索引入门示例

    同时,Lucene还提供了工具类,如IndexReader和IndexSearcher,用于读取和搜索已建立的索引,这些在后续的Lucene学习中都是非常重要的部分。 通过不断实践和深入研究,你可以掌握Lucene的强大功能,从而构建高效、...

    lucene 网页抓取,模拟搜索引擎

    在预处理完成后,Lucene会创建一个倒排索引(Inverted Index),这是一种高效的存储结构,它将每个单词映射到包含该单词的文档列表。这种索引使得搜索过程变得快速,因为只需要查找索引中的关键词就能找到相关的文档...

    Lucene对本地文件多目录创建索引

    在这个过程中,Lucene会分析文档内容,建立倒排索引,以便快速查找包含特定关键词的文件。 描述中提到的博客链接可能提供了具体的实现步骤或示例代码,但具体内容未给出,所以我们将基于Lucene的一般用法进行讲解。...

    Lucene Demo(创建、增加、更新、删除索引等)

    Lucene 支持索引多种类型的数据源,如文本文件、数据库、网页等,并能进行快速的全文检索。 **创建索引** 创建索引是 Lucene 的核心操作之一。首先,我们需要创建一个 `IndexWriter` 实例,设置相应的参数,如目录...

    Lucene4.10.3索引+查询

    - **文档(Document)**:在 Lucene 中,一个文档对应于要索引的信息源,比如网页、电子邮件或者数据库记录。文档由多个字段(Field)组成,每个字段有其特定的名称和值。 - **字段(Field)**:字段是文档的基本...

    luke8用于查看lucene保存的索引库数据和文档数据

    它将非结构化的文本数据(如网页、文档)转换为结构化的索引,以便进行快速的全文搜索。这一过程包括分词、建立倒排索引、存储字段值等步骤。Lucene支持多种高级特性,如模糊搜索、短语搜索、评分机制等,使得搜索...

    Lucene.NET全文索引搜索Demo项目

    这通常涉及读取数据源(如数据库、文件或网页)中的内容,将文本字段拆分成单词(称为分词),并为每个单词创建索引条目。这个过程称为索引构建。项目中可能使用了IKAnalyzerNet,这是一个针对中文的分词器,它能够...

    Lucene 索引、删除、检索 实例

    **Lucene 索引、删除、检索 实例** ...通过运行这个示例,你将更深入地理解Lucene的工作原理,包括如何处理文本、建立索引、删除文档以及执行高效的搜索。这对于使用Lucene进行全文搜索应用的开发至关重要。

    lucene全文索引

    - **文档**: 文档是Lucene中的基本单位,可以对应于数据库的一条记录、网页或任何其他需要搜索的数据源。 - **字段**: 文档由多个字段组成,每个字段有特定的含义,如标题、正文、作者等。 **2. Lucene 工作流程** ...

    lucene索引

    本篇文章将深入探讨 Lucene 创建索引的过程以及如何使用 Lucene 进行高效的全文搜索。 ### 1. Lucene 的基本概念 #### 1.1 文档(Document) 在 Lucene 中,文档是信息的基本单位,它可以是网页、电子邮件、数据库...

    lucene检索新闻数据演示

    3. **创建索引**:使用Lucene API,将预处理后的文本转换为Lucene的索引结构。Lucene的索引是倒排索引,它将每个单词映射到包含该单词的文档列表,以加快搜索速度。 4. **索引存储**:索引会被保存到磁盘或者内存中...

    基于javaweb+jsp+lucene的公交搜索系统

    在公交搜索系统中,Lucene被用来建立公交线路的索引,这使得系统能够对大量的公交数据进行快速检索。用户输入的关键词会被转化为 Lucene 的查询语句,然后在索引中查找匹配的结果,返回给用户。 系统的工作流程大致...

    lucene的小案例

    8. **Lucene_BjGov**:这个压缩包可能包含了项目中的具体实现,包括Lucene的索引创建、查询逻辑、以及与其它框架集成的代码。可能的文件结构可能有配置文件(如spring配置、struts2配置)、Java源代码(定义索引和...

Global site tag (gtag.js) - Google Analytics