`
ak23173969
  • 浏览: 29401 次
社区版块
存档分类
最新评论

lucene常用api(简单的)

阅读更多

 

  原来用过lucene做商城的商品检索,好久没动,最近工作需要,重新捡捡

   今天是第一天

    先将几个常用的api介绍下

 

 

 Directory    创建索引库

抽象类 有4个实现子类 分别为 DbDirectory, FSDirectory(硬盘), JEDirectory, RAMDirectory(内存)

 实际上源码根据操作系统选择对应的Directory ,window下是simpleDirectory 

FSDirectory  创建索引库实现接口

 

Analyzer 分词器

可以把数据进行分词处理.不同的分词器分词结果不同,默认使用标准分词器(standarAnalyzer)

标准分词器针对英文方便,但是针对中文不行,中文的介绍使用IKAnalyzer分词器,(由国人林益良开源)

 

StandardAnalyzer 标准分词器

 

IndexWriter 

索引管理对象IndexWriter ,需要注意的是该构造函数中的布尔值不要轻易填写,因为它会初始化索引库

IndexSearcher

查询索引工具类 

 

QueryParser 查询字符串的解析器

将所有等待检索的字符串,根据分词器,解析成lucene查询query对象

 

Query    解析索引关键字数据封装体

 

TopDocs  解析数据回执总封装体

 

 

 

Document   创建索引记录封装体 相当于数据库中的一条sql记录

 

Field    创建索引记录中的字段  相当于数据中的一个字段,需要注意是该对象的构造方法中需要提供索引的划分

Store.YES: Index.ANALYZED(索引分词): 以后可以通过此字段查询,并且查询出来可以显示此字段

Store.NO: Index.ANALYZED(索引分词): 以后可以通过此字段查询,但是查询出来之后没有此字段

Store.YES: Index.NOT_ANALYZED(索引不分词): 以后可以通过此字段查询(字段全称),并且查询出来可以显示此字段

Store.NO: Index.NOT_ANALYZED(索引不分词): 以后可以通过此字段查询(字段全称),但是查询出来之后没有此字段

 

 

一个简单的api测试实现

import java.io.File;
import java.io.FileReader;
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.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
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.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;

/**
 * 测试lucenapi
 * */
public class CopyOfLuceneApiTest {
	
	protected static final String INDEXSTOREPATH="F:\\lucene\\indexFile";
	protected static final String READSTOREPAHT="F:\\lucene\\readFile";
	
	@Test
	public void test()throws Exception{
			save2Index("HelloAipImple");
			//searcherIndex("package");
	}
	

	public void save2Index(String key){
		Directory dir = null;
		Analyzer an=null;
		IndexWriter indexWriter=null;
		try {
			dir=FSDirectory.open(new File(INDEXSTOREPATH));
			an=new StandardAnalyzer(Version.LUCENE_CURRENT);
			indexWriter=new IndexWriter(dir, an, true, MaxFieldLength.LIMITED);
			Document doc=new Document();
			doc.add(new Field("gnk", key, Store.YES, Index.NOT_ANALYZED_NO_NORMS));
			doc.add(new Field("io", new FileReader("F:\\lucene\\readFile\\index.html")));
			indexWriter.addDocument(doc);
			indexWriter.commit();
			indexWriter.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void searcherIndex(String keyWord) {
		Directory dc=null;
		IndexSearcher searcher=null;
		Analyzer an=null;
		try {
			an=new StandardAnalyzer(Version.LUCENE_30);
			dc=FSDirectory.open(new File(INDEXSTOREPATH));
			searcher=new IndexSearcher(dc);
			QueryParser parse=new QueryParser(Version.LUCENE_30, "io",an);
			Query query=parse.parse(keyWord);
			TopDocs tdoc=searcher.search(query, 100);
			System.out.println(tdoc.totalHits);
			for(int i=0;i<tdoc.totalHits;i++){
				 ScoreDoc [] t=tdoc.scoreDocs;
				 Document doc=searcher.doc(t[i].doc);
				 System.err.println(doc.get("gnk"));
				 System.err.println(doc.get("io"));
			}
		} catch (CorruptIndexException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ParseException e) {
			e.printStackTrace();
		}finally{
			try {
				searcher.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
	}
	
	
}

 

 

 

0
0
分享到:
评论

相关推荐

    Lucene 常用功能介绍视频详解

    以下是对Lucene常用功能的详细介绍: 1. **创建索引** 创建索引是Lucene工作的第一步。通过`Directory`接口,如`FSDirectory`,Lucene可以读写文件系统中的索引。`IndexWriter`类负责实际的索引构建过程,它允许...

    lucene部分常用代码

    Lucene常用代码详解 Lucene是一款功能强大且高效的搜索引擎,广泛应用于各种搜索应用程序中。为了更好地使用Lucene,需要了解其核心API和常用代码。本文将对Lucene部分常用代码进行详细解释,包括多字段搜索、多...

    lucene3.0英文API

    **Lucene 3.0英文API详解** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护。它提供了一个简单且可扩展的接口,用于在各种应用程序中实现搜索功能。Lucene 3.0是该库的一个重要版本,引入了许多...

    lucene API最基本应用

    它提供了一个简单的 Java API,使得开发者能够方便地在应用程序中实现索引和搜索功能。在这个主题中,我们将深入探讨 Lucene 的基本使用方法,包括如何集成 IK 分词器以及实现高亮显示。 ### 1. Lucene 的核心概念 ...

    lucene源码和程序

    总之,Lucene是一个强大的全文检索工具,通过其API,开发者可以轻松地在Java应用中实现高效、灵活的搜索功能。无论你是希望为网站添加搜索功能,还是构建大型的企业级搜索解决方案,Lucene都是值得信赖的选择。通过...

    Lucene实战源码(Lucene in Action Source Code)part1

    在实际应用中,Lucene通常与其他技术结合使用,例如Solr或Elasticsearch,它们提供了更高级的功能,如分布式搜索、集群管理和RESTful API。这部分源码可能未涵盖这些,但对理解Lucene的基本工作原理和内部机制非常有...

    基于Lucene的Oracle数据库全文检索.pdf

    Lucene是一个开源的全文搜索引擎API,提供了完整的查询引擎和索引引擎,部分文本分析引擎。通过使用Lucene,可以对Oracle数据库中的数据建立索引,并提供快速的全文检索功能。 Lucene的优点在于其跨平台和简单易用...

    lucene jar包

    `QueryParser`类是主要的入口点,它可以将简单的自然语言查询(如"北京天气")转化为Lucene可以理解的`Query`对象。同时,这个包还包含了一些查询构造函数,如`BooleanQuery`、`TermQuery`等,使得开发者能够构建...

    Lucene开发包

    1. **官方文档**:Apache 官网提供的文档是学习 Lucene 的重要资源,包括 API 文档、用户指南和开发者指南。 2. **示例代码**:通过分析和运行示例代码,可以快速理解 Lucene 的基本用法。 3. **实战项目**:实践...

    lucene-2.9.2.jar包+源码

    此外,它还提供了一个简单的API,使得开发者可以方便地集成到自己的应用中。 总之,Lucene-2.9.2是一个功能强大的全文检索库,它的中文分词能力和TF-IDF搜索引擎设计,使得开发者能够构建高效、准确的信息检索系统...

    Lucene搜索引擎开发权威经典

    读者将了解到如何利用Lucene提供的API进行精确匹配、模糊搜索、短语查询等高级搜索功能。 第4章专门讨论中文分词,由于中文语言的特性,分词是中文搜索引擎的一大挑战。作者介绍了几种常见的中文分词器,如IK ...

    Lucene In Action

    3. **执行查询**:使用 Lucene 的 API 来执行查询。 4. **结果处理**:获取查询结果并对结果进行进一步处理,如排序、高亮显示等。 #### 四、分析(Analysis) **分析** 是指在索引和查询过程中对文本数据进行预处理...

    Android系统基于Lucene的SD卡 搜索

    它提供了一个简单的API,用于索引文本内容并执行快速、复杂的全文搜索。Lucene的核心功能包括分词、建立倒排索引、查询解析和结果排序。在Android中使用Lucene,可以为应用程序添加强大的本地搜索能力。 **Android...

    Lucene+Heritrix(搜索引擎开发)

    Lucene的目的是为软件开发人员提供一个简单易用的API,使得他们能够在自己的应用程序中加入全文搜索功能。Lucene可以用于全文搜索、索引管理、搜索结果排序、查询分析等功能,是搜索引擎的核心组件之一。 Heritrix...

    lang-groovy-2.0.0-final.zip

    而Lucene-Sugar,则是在流行的全文搜索引擎库Apache Lucene基础上,增添了一些甜美的“糖分”,使得操作变得更加简单易用。现在,让我们一起深入探讨这两个项目。 首先,Groovy 2.0.0-final是Groovy语言的一个稳定...

    一个专业搜索公司关于lucene+solar资料(1)

    - SVM(支持向量机)是一种常用的分类算法。 - 可以用于文本分类任务。 - **5.7.3 多级分类** - 对于复杂的数据集,可以采用多级分类策略。 - 有助于提高分类准确率。 **5.8 自动聚类** - **5.8.1 聚类的定义...

    lasticsearch(简称ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Luce

    - **RESTful API**:提供了简单易用的 RESTful API 接口,方便与多种编程语言集成。 - **全文搜索**:支持高效的全文检索功能,能够快速定位文档中的关键词。 - **复杂性隐藏**:ES 隐藏了 Lucene 的底层复杂性,...

Global site tag (gtag.js) - Google Analytics