学了点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 Lucene是一个高性能、全文本搜索库,由Java编写,被广泛用于开发搜索引擎和需要文本检索功能的应用程序。Apache Lucene 4.7是该库的一个版本,它提供了丰富的功能和改进,使得开发者能够轻松地在他们的应用中...
文章主要研究和应用了基于Lucene的搜索引擎,其特点是利用开源网络爬虫工具抓取互联网信息,并通过Lucene的API对特定信息进行索引和搜索。下面详细介绍相关知识点。 1. Lucene基础 Lucene是由Apache软件基金会提供...
本文将深入探讨如何使用Apache LUCENE这一强大的全文搜索引擎库,设计并实现一个高效的搜索引擎。LUCENE是一款开源的Java库,它为开发者提供了构建搜索引擎所需的核心功能,包括索引创建、文本分析、查询解析以及...
**基于Lucene的搜索引擎** Lucene是一个开源的全文检索库,由Apache软件基金会开发并维护。它是Java语言实现的,可以被集成到各种应用程序中,为开发者提供了强大的文本搜索功能。在本项目中,我们看到的是一个专门...
### Apache Lucene教程知识点概述 #### 一、Apache Lucene简介 ...通过上述内容的学习,读者能够系统地掌握Lucene的基本原理、核心技术及应用场景,为进一步开发基于Lucene的搜索解决方案打下坚实的基础。
Lucene的搜索器负责执行这个过程,它会计算每个文件的相关性得分,并返回结果按照得分排序。 4. **结果展示**:搜索结果通常会显示文件的名称、路径、部分内容预览以及相关性得分。用户可以通过点击结果直接打开...
为了在Web环境中使用Lucene搜索器,我们需要将其部署到像Tomcat这样的Servlet容器中。首先,确保服务器环境中已经安装并配置好Tomcat。接着,将Lucene的JAR文件添加到Tomcat的类路径中,以便服务器能够识别和加载...
本文档主要探讨了基于Apache Lucene的索引与搜索技术,这是构建高效全文搜索引擎的关键组成部分。Lucene是一个开源的Java库,提供了强大的文本分析、索引和搜索功能,被广泛应用于各种信息检索系统中。 第一章 引言...
### 基于Lucene的搜索引擎在Struts中的应用 #### 概述 在现代企业级应用中,信息检索已成为不可或缺的功能,特别是全文检索技术,它以计算机数据(如文字、图像)为处理对象,实现了按照数据内容进行信息检索的...
综上所述,基于Lucene的桌面搜索引擎通过使用强大的分析器和高效的索引技术,实现了在桌面环境中快速、准确地查找信息。这一技术对于提升用户体验,尤其是处理大量本地文件的场景,具有显著的价值。同时,Lucene的...
**基于Java的Lucene全文搜索引擎资源简单实例** Lucene是一个由Apache软件基金会开发的开源全文检索库,它为Java开发者提供了强大的文本搜索功能。Lucene是高性能、可扩展的信息检索库,可以集成到各种Java应用中,...
**基于Lucene搜索引擎的Java源码详解** Lucene是一个高性能、全文检索库,它由Apache软件基金会开发并维护。此Java源码包提供了一个全面的示例,展示了如何利用Lucene进行索引创建、更新(增量索引)以及搜索操作。...
Apache Lucene 是一个开源全文搜索引擎库,为开发者提供了在Java应用程序中实现高效、可扩展的搜索功能的工具。在本篇文章中,我们将深入探讨Lucene 3.6版本中的搜索功能,通过实例解析其核心概念和操作流程。 一、...