`

基于apache Lucene的mp3搜索器

阅读更多
学了点Lucene就尝试用Lucene实现,分两部分,Mp3Indexer.java是创建索引的,mp3search.jsp是搜索mp3的页面。
下面是Mp3Indexer.java的代码。
package mp3indexer;
import java.io.*;
import java.text.*;
import java.util.*; 
import org.apache.lucene.analysis.cjk.*;
import org.apache.lucene.document.*;
import org.apache.lucene.index.*;

public class Mp3Indexer
{
 public final static String mp3Path="d:\mp3";//mp3所在目录
 public final static String indexPath="c:\mp3Indexer";//索引存放目录
 public static void main(String[] args) throws ClassNotFoundException, IOException{
  try {
   IndexWriter writer = new IndexWriter(indexPath, new CJKAnalyzer(), true); 
   indexMp3s(writer, new File(mp3Path)); 

   System.out.println("优化中....");
   writer.optimize();
   writer.close();

  } catch (Exception e) {
   System.out.println(e.getMessage());
  }
}

public static void indexMp3s(IndexWriter writer, File file) throws Exception {
 if (file.isDirectory()) {
  String[] files = file.list();
  for (int i = 0; i < files.length; i++) {
   indexMp3s(writer, new File(file, files));
  }
 }
 else if (file.getPath().endsWith(".mp3")) { //只对 MP3 文件做索引
 System.out.print("正在处理文件:" + file + " ....");
 // Add mp3 file ....
 Document doc = new Document();
 doc.add(Field.Text("name", file.getName())); //索引文件名
 doc.add(Field.UnIndexed("modified", DateFormat.getDateTimeInstance().format(new Date(file.lastModified())))); //索引最后修改时间
 doc.add(Field.Text("size",""+NumberFormat.getNumberInstance().format(file.length()/1048576.0)+"MB")); //索引最后修改时间

 FileReader fReader = new FileReader(file);
 java.io.RandomAccessFile r=new RandomAccessFile(file,"r");
 r.seek(file.length()-128);
 byte[] bt=new byte[127];
 r.read(bt);
 String labelInfo=new String(bt,"GB2312");
 System.out.println(labelInfo);

 if (labelInfo.startsWith("TAG")) {
  doc.add(Field.Text("comment", labelInfo));
 }
 System.out.println("[处理完成]");

 r.close();
 fReader.close();
 writer.addDocument(doc);
 } //end else if
}

} //end class


分享到:
评论

相关推荐

    apache Lucene4.7最全最新的jar包

    Apache Lucene是一个高性能、全文本搜索库,由Java编写,被广泛用于开发搜索引擎和需要文本检索功能的应用程序。Apache Lucene 4.7是该库的一个版本,它提供了丰富的功能和改进,使得开发者能够轻松地在他们的应用中...

    基于Lucene的搜索引擎的研究与应用

    文章主要研究和应用了基于Lucene的搜索引擎,其特点是利用开源网络爬虫工具抓取互联网信息,并通过Lucene的API对特定信息进行索引和搜索。下面详细介绍相关知识点。 1. Lucene基础 Lucene是由Apache软件基金会提供...

    基于LUCENE的搜索引擎的设计与实现源代码

    本文将深入探讨如何使用Apache LUCENE这一强大的全文搜索引擎库,设计并实现一个高效的搜索引擎。LUCENE是一款开源的Java库,它为开发者提供了构建搜索引擎所需的核心功能,包括索引创建、文本分析、查询解析以及...

    基于Lucene的搜索引擎

    **基于Lucene的搜索引擎** Lucene是一个开源的全文检索库,由Apache软件基金会开发并维护。它是Java语言实现的,可以被集成到各种应用程序中,为开发者提供了强大的文本搜索功能。在本项目中,我们看到的是一个专门...

    apache下的lucene教程

    ### Apache Lucene教程知识点概述 #### 一、Apache Lucene简介 ...通过上述内容的学习,读者能够系统地掌握Lucene的基本原理、核心技术及应用场景,为进一步开发基于Lucene的搜索解决方案打下坚实的基础。

    基于lucene的桌面搜索引擎

    Lucene的搜索器负责执行这个过程,它会计算每个文件的相关性得分,并返回结果按照得分排序。 4. **结果展示**:搜索结果通常会显示文件的名称、路径、部分内容预览以及相关性得分。用户可以通过点击结果直接打开...

    基于lucene3.0的搜索器源程序

    为了在Web环境中使用Lucene搜索器,我们需要将其部署到像Tomcat这样的Servlet容器中。首先,确保服务器环境中已经安装并配置好Tomcat。接着,将Lucene的JAR文件添加到Tomcat的类路径中,以便服务器能够识别和加载...

    基于lucene的索引与搜索

    本文档主要探讨了基于Apache Lucene的索引与搜索技术,这是构建高效全文搜索引擎的关键组成部分。Lucene是一个开源的Java库,提供了强大的文本分析、索引和搜索功能,被广泛应用于各种信息检索系统中。 第一章 引言...

    基于Lucene的搜索引擎在Struts中的应用.pdf

    ### 基于Lucene的搜索引擎在Struts中的应用 #### 概述 在现代企业级应用中,信息检索已成为不可或缺的功能,特别是全文检索技术,它以计算机数据(如文字、图像)为处理对象,实现了按照数据内容进行信息检索的...

    基于Lucene的桌面搜索引擎.doc

    综上所述,基于Lucene的桌面搜索引擎通过使用强大的分析器和高效的索引技术,实现了在桌面环境中快速、准确地查找信息。这一技术对于提升用户体验,尤其是处理大量本地文件的场景,具有显著的价值。同时,Lucene的...

    基于java的Lucene全文搜索引擎资源简单实例下载

    **基于Java的Lucene全文搜索引擎资源简单实例** Lucene是一个由Apache软件基金会开发的开源全文检索库,它为Java开发者提供了强大的文本搜索功能。Lucene是高性能、可扩展的信息检索库,可以集成到各种Java应用中,...

    基于lucene搜索引擎的java源码

    **基于Lucene搜索引擎的Java源码详解** Lucene是一个高性能、全文检索库,它由Apache软件基金会开发并维护。此Java源码包提供了一个全面的示例,展示了如何利用Lucene进行索引创建、更新(增量索引)以及搜索操作。...

    lucene3.6 搜索例子

    Apache Lucene 是一个开源全文搜索引擎库,为开发者提供了在Java应用程序中实现高效、可扩展的搜索功能的工具。在本篇文章中,我们将深入探讨Lucene 3.6版本中的搜索功能,通过实例解析其核心概念和操作流程。 一、...

Global site tag (gtag.js) - Google Analytics