`
猜不透
  • 浏览: 133930 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

lucene全文检索实例

阅读更多

在网上找了些关于lucene全文检索的资料,发现对于初学者那些资料还是难于理解,自己总结了些代码现在贴出来,首先在c:\\source文件夹下创建两个txt文件里面的信息可加入“测试”二字,执行TestFileIndexer.java创建索引文件,然后运行TestQuery.java根据关键字读取索引信息,具体的使用还是要看个人需求而定

 我用的jar包是3.6.0,没有jar包的话可以到官网下载

创建索引文件:

 

TestFileIndexer.java

 

 

package text;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Date;

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.document.FieldSelectorResult;
import org.apache.lucene.document.NumericField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;

public class TestFileIndexer {
	public   static   void  main(String[] args)  throws  Exception  {           
		/*  指明要索引文件夹的位置,这里是C盘的source文件夹下  */        
		File fileDir  =   new  File( "c:\\source " );  
		/*  这里放索引文件的位置  */       
		File indexDir  =   new  File( "c:\\index" );          
		Directory dir=FSDirectory.open(indexDir);//将索引存放在磁盘上
		Analyzer lucenAnalyzer=new StandardAnalyzer(Version.LUCENE_36);//分析器
		IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_36,lucenAnalyzer);
		iwc.setOpenMode(OpenMode.CREATE);//创建新的索引文件create 表示创建或追加到已有索引库
		IndexWriter indexWriter=new IndexWriter(dir,iwc);//把文档写入到索引库
		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(":;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;");
				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.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS);
				NumericField modifiField=new NumericField("modified");//所以key为modified
				modifiField.setLongValue(fileDir.lastModified());
				document.add(FieldPath);
				document.add(FieldBody);
				document.add(modifiField);
				indexWriter.addDocument(document);
				
//			}
		}
		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;
	}	
}

 

 

根据关键字查询索引文件里面的信息:

 

TestQuery.java

 

 

package text;

import java.io.File;
import java.io.IOException;



import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;



public class TestQuery {


	public static void main(String[] args) throws ParseException, IOException {
		String index="c:\\index";//搜索的索引路径
		IndexReader reader=IndexReader.open(FSDirectory.open(new File(index)));
		IndexSearcher searcher=new IndexSearcher(reader);//检索工具
		ScoreDoc[] hits=null;
		String queryString="测试";  //搜索的索引名称
		Query query=null;
		Analyzer analyzer=new StandardAnalyzer(Version.LUCENE_36);
		try {
			QueryParser qp=new QueryParser(Version.LUCENE_36,"body",analyzer);//用于解析用户输入的工具
			query=qp.parse(queryString);
		} catch (Exception e) {
			// TODO: handle exception
		}
		if (searcher!=null) {
			TopDocs results=searcher.search(query, 10);//只取排名前十的搜索结果
			hits=results.scoreDocs;
			Document document=null;
			for (int i = 0; i < hits.length; i++) {
				document=searcher.doc(hits[i].doc);
				String body=document.get("body");
				String path=document.get("path");
				String modifiedtime=document.get("modifiField");
				System.out.println(body+"        "); 
				System.out.println(path); 
			}
			if (hits.length>0) {
				System.out.println("找到"+hits.length+"条结果");
				
			}
			searcher.close();
			reader.close();
		}
		

	}
	

}

 

 

2
1
分享到:
评论
5 楼 www314599782 2013-03-14  
嗯,调了半天出来了  pom.xml

<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>3.6.0</version>
</dependency>
4 楼 猜不透 2013-03-14  
bonait 写道
不错!但是可不可以和tomcat结合起来

web的正在弄,如果可以我会贴出代码
3 楼 bonait 2013-03-14  
不错!但是可不可以和tomcat结合起来
2 楼 猜不透 2013-03-14  
www314599782 写道
你用的哪个jar也没说

兄弟,上面有说,我用的是3.6.0
1 楼 www314599782 2013-03-14  
你用的哪个jar也没说

相关推荐

    lucene全文检索实例二(实现对10万条数据检索文件的增删改查操作)

    标题中的“lucene全文检索实例二”指的是使用Apache Lucene这一开源全文搜索引擎库进行二次开发的一个具体案例。在这个实例中,开发者将展示如何在含有10万条数据的环境中实现文件的全文检索,并且包括增、删、改、...

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

    《Lucene全文检索:简单索引与搜索实例详解》 Lucene是Apache软件基金会的开源项目,是一款强大的全文检索库,被广泛应用于Java开发中,为开发者提供了构建高性能搜索引擎的能力。在本文中,我们将深入探讨如何基于...

    使用lucene全文检索数据库

    **使用Lucene全文检索数据库** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它是Java编写的,能够帮助开发者在各种应用程序中实现强大的全文检索功能。在这个项目中,我们将探讨如何利用Lucene ...

    Lucene全文检索Java实例工程

    Lucene是apache软件基金会 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...

    lucene全文搜素实例 java lucene 实例

    **Lucene 全文搜索引擎实例:Java Lucene 实例** Lucene 是 Apache 软件基金会的一个开源项目,它提供了一个高性能、可扩展的信息检索库。这个实例将深入讲解如何在 Java 中使用 Lucene 来创建索引并执行各种搜索...

    lucene全文检索案例源码

    《深入剖析Lucene全文检索案例源码》 在信息技术领域,全文检索技术是搜索引擎的核心,而Lucene作为Java平台上的一个开源全文检索库,被广泛应用于各种搜索应用中。本篇将围绕“lucene全文检索案例源码”展开,深入...

    lucene全文检索资源包

    **Lucene 全文检索资源包详解** Lucene 是一个由 Apache 软件基金会开发的开源全文检索库,主要用于构建高效、可扩展的信息检索应用。这个“lucene全文检索资源包”包含了 Lucene 的一个早期版本——1.4.3,虽然...

    Lucene4 全文检索

    **Lucene4 全文检索详解** Lucene4 是 Apache 软件基金会的一个开源全文检索库,它为开发者提供了强大的文本搜索功能。作为一个高级的搜索引擎工具包,Lucene4 提供了完整的索引和搜索机制,使得在文件和数据库中...

    使用Lucene对doc、docx、pdf、txt文档进行全文检索功能的实现 - 干勾鱼的CSDN博客 - CSDN博客1

    Apache Lucene 是一个开源的全文检索库,它提供了一种高效、可扩展的方式来构建全文搜索引擎。在Java开发中,Lucene被广泛用于实现文件的全文检索功能,包括对doc、docx、pdf、txt等常见格式文档的文本内容检索。在...

    lucene3.0全文检索入门实例

    **Lucene 3.0 全文检索入门实例** Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发。它提供了一个高级、灵活的搜索功能框架,允许开发者在自己的应用中轻松地集成全文检索功能。本文将重点介绍如何使用 ...

    基于Lucene的全文检索引擎研究与应用.pdf

    ### 基于Lucene的全文检索引擎研究与应用 #### 概述 随着信息技术的飞速发展,尤其是互联网的普及,企业和个人积累了大量的电子文档。如何高效地管理和检索这些文档成为了亟待解决的问题。全文检索技术作为一种...

    paoding+lucene实现全文检索功能简单实例

    本实例将介绍如何结合Paoding和Lucene来实现一个简单的全文检索系统,这在处理中文数据时尤其有效。 首先,让我们了解一下Paoding。Paoding是一款优秀的中文分词库,它针对中文的特点进行了优化,能有效地进行词语...

    Lucene 全文检索 之 详解

    **全文检索技术与Lucene详解** 全文检索是一种在大量文本数据中快速查找包含特定词汇或短语的信息的技术。在互联网时代,随着数据量的爆炸性增长,高效、准确的全文检索变得至关重要。Lucene,由Apache软件基金会...

    Lucene索引器实例

    它提供了一个高级的、灵活的、可扩展的接口,使得开发者能够轻松地在应用程序中实现全文检索功能。在深入理解Lucene索引器实例之前,我们先要了解Lucene的基本概念。 **1. Lucene的基本组件** - **文档(Document)...

    lucene 全文检索

    **Lucene 全文检索** Lucene 是一个高性能、全文本搜索库,由Apache软件基金会开发。它提供了索引和搜索文本数据的强大功能,广泛应用于各种应用程序,如内容管理系统、搜索引擎以及任何需要快速查找大量文本数据的...

    最新全文检索 lucene-5.2.1 入门经典实例

    《最新全文检索 Lucene-5.2.1 入门经典实例》 Lucene是一个开源的全文检索库,由Apache软件基金会开发,广泛应用于各种信息检索系统。在5.2.1版本中,Lucene提供了更为高效和强大的搜索功能,为开发者提供了构建...

    lucene实例(包括分页、中文检索等)

    lucene实例是一个比较详细的例子,包括lucene的入门到高级实例,代码里有比较详细的实例,所有的实例都是通过junit来测试的。实例包括各种搜索:如通配符查询、模糊查询、查询结果的分页、中文分词器、自定义分词器...

    Lucene.Net全文检索Demo

    **Lucene.Net全文检索Demo详解** Lucene.Net是一款开源的全文搜索引擎库,它是Apache Lucene项目在.NET平台上的实现。Lucene.Net提供了高效、可扩展的搜索功能,被广泛应用于各种需要快速、精确检索信息的系统中。...

    Lucene使用代码实例之搜索文档

    Lucene是一个高性能、全文检索库,它提供了强大的文本分析和索引功能,广泛应用于搜索引擎开发和其他需要高效文本处理的场景。本篇文章主要面向初学者,通过实例详细解释如何使用Lucene进行文档搜索。 首先,我们...

Global site tag (gtag.js) - Google Analytics