Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
用Lucene建立索引及查询示例

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

首先去 apache 网站下载 lucene 的开发包,并配置好环境变量
http://jakarta.apache.org/lucene/docs/index.html

建立索引程序:
/*
 * Created on 2004-4-26
 */

import org.apache.lucene.index.*;
import org.apache.lucene.analysis.standard.*;
import org.apache.lucene.document.*;
import java.io.*;

/**
 * @author bell.wang
 */
public class IndexFiles {

 public static void main(String[] args) {
  try{
   IndexWriter writer = new IndexWriter("myindex", new StandardAnalyzer(), true);
     
  
   File files = new File("mydoc");
   String[] Fnamelist = files.list();
   for (int i = 0; i < Fnamelist.length; i++){
    File file = new File(files,Fnamelist[i]);
     
    Document doc = new Document();
    Field fld = Field.Text("path", file.getPath());
    doc.add(fld);
  
    fld = Field.Keyword("modified", DateField.timeToString(file.lastModified()));
    doc.add(fld);
      
    FileInputStream in = new FileInputStream(file);
    Reader reader = new BufferedReader(new InputStreamReader(in));
    fld = Field.Text("contents", reader);
    doc.add(fld);
   
    writer.addDocument(doc);
    System.out.println("Added : " + doc.get("path")); 
    
   }   
   writer.optimize();
   writer.close();
   System.out.println("Has Added Total: " + Fnamelist.length);
  }catch(Exception e){
   System.out.println(e);
  }
 
 }

}

程序对当前路径下mydoc目录下所有文件建立索引,其中索引有三个字段: 文件路径,
最后修改时间,文件内容.  建立的索引文件在当前路径下的myindex目录

检索程序:
/*
 * Created on 2004-4-26
 *
 */
import org.apache.lucene.analysis.*;
import org.apache.lucene.analysis.standard.*;
import org.apache.lucene.search.*;
import org.apache.lucene.queryParser.*;
import org.apache.lucene.document.*;
//import com.augmentum.hrms.*;
import java.util.Date;
/**
 * @author bell.wang
 *
 */
public class SearchFile {

 public static void main(String[] args) {
  
  //XMap a = new XMap("");
  Analyzer anlzr = new StandardAnalyzer();
  try{
   Query q = QueryParser.parse("数据库", "contents", anlzr);
   System.out.println("Searching for : " + q.toString("contents"));
  
   Searcher serch = new IndexSearcher("myindex");
   Hits hts = serch.search(q);
   for(int i=0; i<hts.length(); i++){
    Document doc = hts.doc(i);
    String path = doc.get("path");
    System.out.println("Find: " +i+": "+ path);
    System.out.println("Find: " + doc.get("modified"));
    System.out.println("Find: " + doc.get("path"));
   }
   System.out.println("Find Total: " + hts.length());
  }catch(Exception e){
   System.out.println(e);
  }
 }
}

程序对索引的contents字段用“数据库“关键字进行查询,返回
的是所有包含有关键字的文档集合,分别打印出各个字段.

上面的程序我用纯文本文件测试通过,.txt,.jsp,.html 都可以,
word,pdf 等文件需要经过转化才能对其进行索引。




相关文章

相关软件