`
234390216
  • 浏览: 10239518 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462936
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1776058
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398812
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:395168
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:680185
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:531187
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1185154
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:468925
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151509
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68375
社区版块
存档分类
最新评论

Lucene的简单使用

阅读更多

Lucene的简单使用:在进行检索的时候是需要原来已经创建了索引才能检索到需要的内容的。所以在使用Lucene的时候大体就是两个方面,建立索引和检索,其次就是一些不能的策略了!

 

 

1.建立索引

import java.io.File;
import java.io.FileInputStream;
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.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;

public class Writer {
	
	public static void main(String args[]) throws IOException {
		String indexDir = "E:\\index\\test";//索引存放的路径
		String dataDir = "D:\\Backup\\Note";//这个是用来建立索引的数据源,此处是以一个一个的文件为例来建立索引的
		Directory dir = FSDirectory.open(new File(indexDir));
		Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_31);//建立一个对应版本的分析器
		IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_31, analyzer);//这是用于在建立索引时配置信息的,默认是默认信息
		IndexWriter indexWriter = new IndexWriter(dir, config);
		File files[] = new File(dataDir).listFiles();
		for (File file:files) {
			Document doc = new Document();
			Field field1 = new Field("fileName",file.getName(), Field.Store.YES, Field.Index.ANALYZED);
			FileInputStream fis = new FileInputStream(file);
			int len = fis.available();
			byte[] bytes = new byte[len];
			fis.read(bytes);
			fis.close();
			String content = new String(bytes);
			Field field2 = new Field("content", content, Field.Store.YES, Field.Index.ANALYZED);
			doc.add(field1);
			doc.add(field2);
//现在流行的检索工具都是把每一个信息源看作一个Document来进行处理的
			indexWriter.addDocument(doc);
			indexWriter.optimize();
		}
		int docs = indexWriter.numDocs();
		System.out.println("共索引了"+docs+"个文件!");
		indexWriter.close();
	}
	
}

 

 

2.进行检索

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.queryParser.MultiFieldQueryParser;
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.search.TopScoreDocCollector;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;

public class Searcher {

	public static void main(String args[]) throws IOException, ParseException {
		
		String indexDir = "E:\\index\\test";
		Directory dir = FSDirectory.open(new File(indexDir));
		IndexSearcher indexSearcher = new IndexSearcher(dir);
		Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_31);
//		QueryParser queryParser = new QueryParser(Version.LUCENE_31, "content", analyzer);
		QueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_31, new String[] {"fileName","content"}, analyzer);
		Query query = queryParser.parse("内 的 值");
		TopScoreDocCollector collector = TopScoreDocCollector.create(3, true);//前面一个参数表示一次最多检索多少,这里检索的是永远从第一条开始
		indexSearcher.search(query, collector);
		TopDocs topDocs = collector.topDocs(2, 2);//第一个参数为从第多少个记录开始,第二个参数为每次取多少条记录
//		TopDocs topDocs = indexSearcher.search(query, 10);
		int totalHits = topDocs.totalHits;
		System.out.println("totalHits:"+totalHits);
		System.out.println();
		ScoreDoc scoreDocs[] = topDocs.scoreDocs;
		for (ScoreDoc scoreDoc:scoreDocs) {
			float score = scoreDoc.score;
			Document doc = indexSearcher.doc(scoreDoc.doc);
			System.out.println("fileName:"+doc.get("fileName"));
//			System.out.println("content:"+doc.get("content"));
			System.out.println("score:"+score);
			System.out.println();
		}
		indexSearcher.close();
		
	}
	
}

 

 

 

0
0
分享到:
评论
1 楼 zz958712568 2014-05-17  
TopDocs topDocs = collector.topDocs(2, 2);
这一句真是误导人!
第一个参数换成0能死啊!

相关推荐

    Lucene简单使用需要的jar

    总的来说,Lucene的使用涉及了文本分析、索引构建、查询解析和结果返回等多个环节,通过这些库和工具,开发者可以构建出高效、精确的全文搜索引擎。而上述的jar包组合,提供了完成这些任务所需的基本组件。

    Lucene3.1使用教程

    **Lucene 3.1 使用教程** Lucene 是一个高性能、全文检索库,由Apache软件基金会开发并维护。它提供了一个简单但功能强大的API,使得开发者可以轻松地在应用程序中集成全文检索功能。本教程主要关注的是Lucene 3.1...

    Lucene 索引的简单使用

    以上就是关于“Lucene索引的简单使用”的详细介绍,包括其核心概念、创建和查询索引的步骤以及一些高级特性。希望对你理解和应用Lucene有所帮助。在实际开发中,可以根据需求选择合适的Analyzer,优化索引策略,以...

    使用lucene进行简单的开发

    【使用Lucene进行简单的开发】 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它提供了完整的搜索功能,包括分析、索引和搜索文本。在这个教程中,我们将了解如何利用Lucene进行简单的开发。 ### 一...

    lucene简单介绍及solr搭建使用

    标题“lucene简单介绍及solr搭建使用”涉及了两个主要的开源搜索技术:Lucene和Solr。Lucene是Java开发的一个全文检索库,而Solr则是基于Lucene构建的企业级搜索平台,提供了更高级的功能和管理界面。 **Lucene简介...

    Lucene原理及使用总结

    一个简单的Lucene应用实例是搜索文本文档。例如,开发者可以创建一个索引目录,然后指定一个包含文本文档的数据目录。使用`Analyzer`(如CJKAnalyzer)对文本进行分析,通过`IndexWriter`将文档内容写入索引。这样,...

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

    以下是一个简单的示例代码,演示了如何使用Lucene搜索包含关键词"lucene"的文档: ```java public class TxtFileSearcher { public static void main(String[] args) throws Exception{ String queryStr = ...

    spring-lucene简单项目

    在"spring-lucene简单项目"中,我们将学习如何配置和使用Lucene来索引和检索数据。 项目开始时,你需要在Spring配置文件中声明Lucene的相关bean,如Analyzer(分析器)、Directory(存储索引的目录)和IndexWriter...

    IK分词器集成lucene4.5使用方法

    IK分词器是一款广泛应用于Java开发中的中文分词工具,主要为Lucene、Elasticsearch等全文搜索引擎提供支持。在本教程中,我们将探讨如何将IK分词器集成到Lucene 4.5版本中,以提升中文文本处理的效率和准确性。 ...

    Lucene的使用与优化

    ### Lucene的使用与优化 #### 一、Lucene简介 ...此外,还提供了一个简单的示例代码,帮助读者理解如何使用Lucene进行文档索引和搜索。希望这些知识点能够帮助大家更好地理解和使用Lucene这一强大的搜索引擎库。

    lucene3.0.3搜索的使用示例

    这个"lucene3.0.3搜索的使用示例"压缩包文件很可能是为了帮助用户理解并学习如何在项目中应用Lucene 3.0.3版本的功能。 在Lucene 3.0.3中,主要包含了以下核心概念和知识点: 1. **索引(Indexing)**:这是Lucene...

    Lucene 简单入门程序实例

    标题与描述:“Lucene简单入门程序实例”这一标题与描述明确指出文章将引导读者通过一个实际的示例来了解和掌握Lucene的基本操作。Lucene是一个高性能、全功能的文本搜索引擎库,它允许用户对文档进行索引和搜索。本...

    Lucene的简单介绍

    Lucene的目标是为软件开发人员提供简单易用的工具包,方便地在目标系统中实现全文搜索功能或构建一个完整的全文搜索引擎。 Lucene的主要优点包括: 1. 索引文件格式独立于应用平台:Lucene定义了一套以8位字节为...

    Lucene入门与使用

    Lucene入门与使用,非常简单,适合入门

    Lucene简单Demo(附带Jar)

    **Lucene的简单使用流程** 1. **创建Analyzer**: 根据需求选择或自定义分析器,例如使用StandardAnalyzer处理英文文本。 2. **创建Document**: 定义要索引的字段和内容,例如`document.add(new TextField("content...

    使用compass+lucene实现简单的全文检索功能

    本文将详细介绍如何使用 Compass 和 Lucene 实现一个简单的全文检索功能。 首先,Lucene 是一个高性能、全功能的文本分析库,主要用于信息检索。它提供了索引和搜索大量文本数据的能力,包括分词、分析、存储和搜索...

    LUCENE的搜索引擎例子

    本篇文章将深入探讨如何在B/S(浏览器/服务器)架构下利用Lucene实现一个简单的搜索引擎实例。 首先,我们需要了解Lucene的核心概念。Lucene提供了一套完整的文本检索框架,包括索引构建、查询解析、评分以及结果...

    Lucene示例 BM25相似度计算

    在Lucene中,查询可以是简单的关键词,也可以是复杂的布尔表达式。查询解析器将用户输入转化为 Lucene 可以理解的Query对象,然后执行查询,返回匹配的文档集合。在本示例中,我们将看到如何使用这些功能并对比不同...

Global site tag (gtag.js) - Google Analytics