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

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
分享到:
评论

相关推荐

    java开发常用jar包

    lucene-core.jar 、lucene-highlighter.jar 、compass-index-patch.jar、 compass-2.1.0.jar 是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎 json-lib-2.2.3-jdk15.jar json和java转化的辅助工具 ...

    Java EE常用框架.xmind

    Java EE常用框架 WebService 介绍 基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用 术语 XML. Extensible Markup Language -扩展性标记语言 WSDL – ...

    微信公众平台应用开发:方法、技巧与案例.(机械工业.柳峰)

     11.2.4 常用API介绍 288  11.2.5 Lucene的评分机制 290  11.2.6 案例:使用Lucene索引和检索 291  11.3 中文分词 296  11.3.1 中文分词方法 296  11.3.2 IK分词器的使用 297  11.4 索引浏览器Luke ...

    java开源包1

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包11

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包2

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包3

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包6

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包5

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包10

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包4

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包8

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包7

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包9

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    JAVA上百实例源码以及开源项目源代码

    Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。...

    java开源包101

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    Java资源包01

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    JAVA上百实例源码以及开源项目

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    单点登录源码

    通用用户管理系统, 实现最常用的用户注册、登录、资料管理、个人中心、第三方登录等基本需求,支持扩展二次开发。 &gt; zheng-wechat-mp 微信公众号管理平台,除实现官网后台自动回复、菜单管理、素材管理、用户管理...

Global site tag (gtag.js) - Google Analytics