(转) lucene+paoding亲密接触

lucene是什么?lucene是一个开源的,广泛应用的,对数据进行索引、查询的一个框架,更详细的介绍请查看www.lucene.com.

下面简单的描述一下索引和查询过程。

1. 做索引简单过程:

//获取索引存储路径

String strindexDir = “”;

File indexDir = new File(strindexDir);

// 分词器
  Analyzer analyzer = new PaodingAnalyzer(); // 中文分词 庖丁解牛

//获取写索引对象,准备开始做索引,索引对象相当于数据库中的表
   indexWriter = new IndexWriter(indexDir, analyzer, true);

//构造Document对象,Document相当于数据库中 的一条记录
Document doc = new Document();

// 给记录中的字段赋值
    doc.add(new Field(“name”, "value", Field.Store.NO, Field.Index.ANALYZED));

doc.add(new Field(“name”, "value", Field.Store.NO, Field.Index.ANALYZED));

//表记录加入表中
    indexWriter.addDocument(doc);

// 做完索引之后,对索引进行优化
   indexWriter.optimize();

//关闭资源
   indexWriter.close();

2.查询过程

//存放查询结果
  List<HashMap<String, String>> rs = new ArrayList<HashMap<String, String>>();

//获取分析器,做索引的时候需要分析,查询的时候也需要分析
  Analyzer analyzer = new PaodingAnalyzer();

//构造查询对象,queryField是查询那个Field,相当于数据记录的哪个字段,q是查询关键字
  query = new QueryParser(queryField, analyzer).parse(q);

//下面这句是可以看到对查询关键字的分析
   System.out.println("query key analyze result: " + query.toString());

//获取索引对象,进行查询
   IndexReader reader = IndexReader.open(indexDir);
   Searcher searcher = new IndexSearcher(reader);
   Hits hits = searcher.search(query);
   searcher.close();

//从查询结果中获取信息
   Document doc = null;

HashMap<String, String> item = new HashMap<String, String>();

item.put("name", "value");

item.put("name", "value");
    rs.add(item);

//释放资源
   reader.close();

做索引,查询就被这么短短几行搞定, 如此看来,lucene好简单,甚强大。其实不然,要游刃有余,需深入磨练。

附上俺的demo

原文地址:http://blog.csdn.net/hong201/article/details/4015301

时间: 2024-11-05 14:56:48

(转) lucene+paoding亲密接触的相关文章

我和Java 8的第一次亲密接触

周五上班偶然发现单位的系统里有Java 8可以用了,周六无事,把自己现在在做的一个项目从Java 1.6升级到了1.8.过程并不是一番风顺,在此记录,希望可以对各位看客有所帮助. 先说说现在在做的这个项目吧.这个项目是个纯技术的项目,从去年年中开始,断断续续搞了快一年了,beta三月上线,第一个版本应该是10月上线吧.这个项目现在使用的是Java 1.6,没有用什么大型中间件,使用的第三方软件包括Spring,common-x,和scala,开发环境是IntelliJ和Maven. 升级的第一步

秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别

版权声明:本文为博主原创文章,未经博主允许不得转载. 本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_beginthreadex? 使用多线程其实是非常容易的,下面这个程序的主线程会创建了一个子线程并等待其运行完毕,子线程就输出它的线程ID号然后输出一句经

第2章 与c++第一次亲密接触

第2章 与c++第一次亲密接触 2.1 一个c++程序的自白 2.1.1 用visual studio创建c++程序 2.1.2 以手工方式创建c++程序 2.1.3 c++程序=预编译指令+程序代码+注释 2.1.4 编译器和链接器 2.1.5 c++程序的执行过程 2.1.6 程序的两大任务:描述数据与处理数据 2.2 基本输入/输出流 2.2.1 标准的输入和输出对象 2.2.2 输出格式控制 2.2.3 读/写文件 2.3 最常用的开发环境visual studio 2.3.1 visu

与Jquery Mobile的第一次亲密接触

Jquery Mobile闻名已久,今天终于有亲密接触的机会. 通过动手写的demo,对它有了一个基本的认识: 自带的UI组件用起来简洁,方便:对旧版本的浏览器或移动设备能做到很好的优雅降级,而不影响页面性能: 基于AJAX的数据处理给人很好的用户体验:快速,高效,交互友好: 页面切换效果么么哒; data-*属性的运用也十分便捷,易用,且功能强大. Demo: <!DOCTYPE html> <html> <head> <title></title&

lua和c的亲密接触

介绍 lua和c的亲密接触,靠的是一个虚拟栈.lua通过这个虚拟栈来实现和c之间值的互传.栈上的每一个元素是一个lua值(nil,number,string...). 当lua调用c函数的时候,这个函数会得到一个新的栈,这个栈独立于c函数本身的栈,也独立于lua自己的栈.它里面包含了lua要传给c的所有参数,然后c函数会把返回的结果放入这个栈中返回给调用者. 对于栈的查询操作,如果按照栈的规则,只能拿到栈顶的元素.但这里和常规的栈有一些差异.就是可以用一个索引来指向栈上的任何元素.正数的索引(1

亲密接触Redis-第三天(Redis的Load Balance)

前言 上两天讲述了Redis的基本搭建和基于HA的集群布署方式以及相关的策略和注意点.今天开始讲述Redis的Cluster功能,而这块目前来说网上资料不是太全,就算有1,2篇也只是单讲服务端的搭建也并未提及相关的客户端怎么和Redis Cluster间的调用问题. 我们今天要讲述的Redis Cluster是真正的Load Balance,它和Sentinel不一样,Sentinel虽然也叫集群,可是它是一种HA策略即High Available或者又通俗的被称为"灾难转移"策略.

【阿里云产品公测】与云引擎ACE第一次亲密接触

阿里云用户:林哥神话 公测当然是第一次了.这个第一次亲密接触,但话又说回来对ACE我一直都不是那感兴趣的,但是看到阿里介绍还是那般神奇,再加上200无代金券来更加给力.最后就申请了这次公测. 平时一直以来对写文章都是这样的无法触笔.在申请通过的今天早上发了一个上午时间.根据操作说明一步步把ACE运用起来.说上去他的使用不是一般人可以理解的.当然ACE也是能专业人员使用.能用上我算得上是专业了.使用上很强新浪云,当然这样的东西不是很新奇,但最终还是要归到他的操作上.阿里ACE提出了,安全\高效\经

黑马程序员--01.Object-C--第一次亲密接触

------- android培训.java培训.iOS培训 期待与您交流! ---------- 等了好久终于等到今天,今天是我第一次和OC的亲密接触,此刻心情有点小激动噻!^_^. 我对于java有过一段时间的接触,但是对C语言就没有那么熟悉了.哎,不达标么!所以近期恶补了一下C语言的知识,以便学习OC起来没有那么吃力. 嘿嘿!进入正题! 1.什么是OC 1>.OC就是在C语言的基础上,增加了一层最小的面向对象语言,也就是说java一样,也是面向对象滴! 2>.OC是完全兼容C语言的,可以

第四章 跨平台图像显示库——SDL 第一节 与SDL第一次亲密接触

http://blog.csdn.net/visioncat/article/details/1596576 GCC for Win32 开发环境介绍(5) 第四章 跨平台图像显示库——SDL 第一节 与SDL第一次亲密接触 SDL,也就是 Simple DirectMedia Layer 是一个针对 声音,键盘,鼠标,遥杆,通过OpenGL的3D以及2D处理的底层跨平台函数库.她主要支持的平台有Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X,