目录如下:
d:\\index 存放索引文件
D:\testfolder 存放大文件分割好的小文件(很多)
d:/book.txt 存放原始文件
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
public class TestQuery {
public static void main(String[] args) throws IOException, ParseException {
Hits hits = null ;
String queryString = "把原来可能是军心涣散的溃退变成一场精神抖擞的胜利进军.进军到战略要地西北去,无疑是他们大战役的第二个基本原因,他们正确地预见到这个地区要对中,日,苏的当前命运将起决定性的作用.后来的历史证明,他们强调这个原因是完" ;
Query query = null ;
IndexSearcher searcher = new IndexSearcher( "d:\\index" );
Analyzer analyzer = new StandardAnalyzer();
try {
QueryParser qp = new QueryParser( "body" , analyzer);
query = qp.parse(queryString);
} catch (ParseException e) {
}
if (searcher != null ) {
hits = searcher.search(query);
if (hits.length() > 0 ) {
System.out.println( " 找到: " + hits.length() + " 个结果! " );
// System.out.println(searcher.getIndexReader().document( ));
}
for(int i=0; i<hits.length(); i++){
System.out.println(hits.id(i));
}
}
}
}
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Date;
import jeasy.analysis.MMAnalyzer;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
/** */ /**
* author lighter date 2006-8-7
*/
public class TextFileIndexer {
public static void main(String[] args) throws Exception {
/**/ /* 指明要索引文件夹的位置,这里是C盘的S文件夹下 */
File fileDir = new File( "d:\\testfolder" );
/**/ /* 这里放索引文件的位置 */
File indexDir = new File( "d:\\index" );
Analyzer luceneAnalyzer = new StandardAnalyzer();
IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer, true);
File[] textFiles = fileDir.listFiles();
long startTime = new Date().getTime();
// 增加document到索引去
for ( int i = 0 ; i < textFiles.length; i ++ ) {
if (textFiles[i].isFile()
&& textFiles[i].getName().endsWith( ".txt" )) {
System.out.println( " File " + textFiles[i].getCanonicalPath()
+ " 正在被索引.... " );
String temp = FileReaderAll(textFiles[i].getCanonicalPath(),
"GBK" );
System.out.println(temp);
Document document = new Document();
Field FieldPath = new Field( "path" , textFiles[i].getPath(),
Field.Store.YES, Field.Index.NO);
Field FieldBody = new Field( "body" , temp, Field.Store.YES,
Field.Index.TOKENIZED,
Field.TermVector.WITH_POSITIONS_OFFSETS);
document.add(FieldPath);
document.add(FieldBody);
indexWriter.addDocument(document);
}
}
// optimize()方法是对索引进行优化
indexWriter.optimize();
indexWriter.close();
// 测试一下索引的时间
long endTime = new Date().getTime();
System.out
.println( " 这花费了 "
+ (endTime - startTime)
+ " 毫秒来把文档增加到索引里面去! "
+ fileDir.getPath());
}
public static String FileReaderAll(String FileName, String charset)
throws IOException {
BufferedReader reader = new BufferedReader( new InputStreamReader(
new FileInputStream(FileName), charset));
String line = new String();
String temp = new String();
while ((line = reader.readLine()) != null ) {
temp += line;
}
reader.close();
return temp;
}
}
分享到:
相关推荐
1. 搜索引擎概述:搜索引擎是互联网信息检索的核心工具,通过爬虫技术遍历网络,抓取网页内容,然后对这些内容进行索引和存储,以便用户通过关键词查询获取相关信息。搜索引擎主要包括爬虫、索引、查询处理和排名四...
Nutch 是一个开源的网络爬虫项目,主要用来抓取互联网上的网页并建立索引,为信息检索提供基础。对于初学者来说,它是一个很好的平台,可以深入了解搜索引擎的工作原理并动手实践。 ### 1. 系统架构 Nutch 的系统...
1. **网络爬虫**:网络爬虫是搜索引擎获取网页的第一步,它按照一定的策略自动抓取互联网上的信息。在C++或C中实现爬虫,需要熟悉HTTP协议,掌握多线程和异步IO技术,以及高效的数据存储。 2. **HTML解析**:解析...
Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索引擎库,可以被集成到各种应用中实现全文检索功能。Lucene提供了完整的搜索功能实现,包括索引创建、文档存储、查询解析和结果排序等。它的设计...
《深入搜索引擎:海量信息的压缩、索引和查询》是斯坦福大学信息检索和挖掘课程的首选教材之一,并已成为全球主要大学信息检索的主要教材。《深入搜索引擎:海量信息的压缩、索引和查询》理论和实践并重,深入浅出地给...
本项目通过对大量英文和中文网页文档的下载与预处理,构建了一个基础的搜索引擎文本预处理流程。该流程涵盖了文档下载、HTML解析、文本提取、字符化、分词、停用词删除等多个关键步骤。通过这一系列步骤,使得原始...
搜索引擎文本预处理是构建高效搜索系统的关键步骤,它涉及到数据获取、信息提取、文本分析等多个环节。本项目基于对搜索引擎的基本原理、架构设计和技术的深入理解,利用Scrapy框架进行网页抓取,结合Lucene的分词...
2. **配置索引服务器**:在“计算机管理”界面下的索引服务中,新建一个编录,输入编录名并关联至数据库,随后添加需索引的目录路径。此操作使索引服务能够监控指定目录下的文件变动,自动更新索引。 3. **SQL ...
1. **爬虫技术**:搜索引擎的第一步是收集互联网上的信息,这通常通过网络爬虫完成。无极搜索引擎可能会有一个智能爬虫系统,能够自动发现、下载并存储网页,以便后续处理。 2. **页面抓取与预处理**:抓取到的网页...
索引构建是将处理后的文本转换为倒排索引,其中每个词对应一个倒排表,记录包含该词的文档及其位置信息。 五、查询处理与排序 当用户输入查询时,搜索引擎会解析查询语句,生成查询词的集合,然后在索引中查找这些...
在IT行业中,文件(夹)搜索引擎是一个至关重要的工具,它能帮助用户快速定位和查找存储在计算机中的特定文件或文件夹。在这个项目中,我们关注的是一个基于C#编程语言实现的文件搜索引擎。C#是一种现代化、面向对象的...
全文检索技术能够理解自然语言,并从中提取出关键信息,为用户提供类似搜索引擎的体验。以下是对Oracle全文检索技术的详细介绍: 1. **Oracle Text(Oracle全文本)概述** Oracle Text是Oracle数据库的一个组件,...
搜索引擎是互联网的重要组成部分,它通过爬取、索引和排名网页,为用户提供快速、准确的信息检索服务。搜索引擎的核心功能包括网页抓取、预处理、索引、查询处理和结果排序等。 二、网页抓取 网页抓取是搜索引擎的...
- **2.2.3 Lucene全文检索引擎**:Lucene是一个高性能、全功能的文本搜索引擎库,本节详细介绍其特性和用法。 - **2.2.4 Nutch网络搜索软件**:Nutch是一款开源的网络爬虫项目,用于抓取网页并构建索引,本节介绍...
在这个“基于Lucene的简单桌面搜索引擎”项目中,我们将探讨如何利用Lucene的核心功能在用户的桌面上实现一个基本的文件搜索工具。 1. **Lucene的基本概念** - **索引**:Lucene通过建立索引来提高搜索效率。索引...
本项目旨在利用大数据处理框架Spark来构建一个财经新闻搜索引擎,涉及的主要技术包括新闻正文提取、中文分词、倒排索引构建、执行搜索以及用户界面设计。下面是各项任务的详细解析: 1. **新闻正文提取**:此步骤...
总结来说,“lucene搜索引擎demo”提供了一个完整的示例,涵盖了从数据抓取、分词处理到建立和使用Lucene索引的全过程。通过对这个demo的学习,开发者可以快速理解并掌握Lucene搜索引擎的使用,进一步应用于实际项目...