部分知识点的梳理,参考<lucene实战>及网络资料

1、基本概念

lucence 可以认为分为两大组件:
1)索引组件
  a、内容获取:即将原始的内容材料,可以是数据库、网站(爬虫)、文本转换为lucence的Docment
  Docment 为若干个带值得域
  b、文档分析:利用分词器对文档进行分析;
  c、建立索引:根据文档分析的结构建立索引文件;
2)搜索组件
  a、建立查询:即将用户请求转换为搜索引擎支持的查询对象格式;
  b、执行搜索查询;并反馈Document结果集;

2、官方样例代码分析

**索引组件部分工作
1)创建一个包含某个分词器的IndexWriter
  private IndexWriter writer;
  writer = new IndexWriter(IndexDir, new StandardAnalyzer(), true, IndexWriter.MaxFieldLength.UNLIMITED);

2)遍历被索引的文件(即原始内容)将其转换为Document
  Docment doc = new Docment();
  doc.add(new Field("contents", new FileReader(f));
  doc.add(new Field("filename"), f.getName(), Field.Store.Yes, Field.Index.NOT_ANALYZED);

3)针对该Docment创建索引
  writer.addDocment(doc);

**搜索组件部分工作
1)打开索引文件
  IndexSearcher is = new IndexSearcher(IndexDir);

2)创建一个查询对象
  QueryParser parser = new QueryParser(Version.LUCENE_30, "contents", new StandardAnalyzer());
  Query query = parser("要找的查询关键字");

3)执行查询并返回结果
  TopDocs hits = is.search(query, 10);

3、lucene的核心类

  1、IndexWriter :提供对索引文件的写入操作;
  2、Directory: 抽象类,索引的存放位置
  3、Analyzer: 分词器,由IndexWriter的构造函数指定
  //IK 中文分词
  Analyzer analyzer = new IKAnalyzer();
  4、Document: 虚拟文件,由一些Field的集合;
  5、Field: 域,lucene实际搜索值的地方

  6、IndexSearcher:搜索由IndexWriter创建的索引;
  7、Term:搜索的基本单元,与Field类似
  8、Query:查询子类
  //多字段查询
  String [] stringQuery={"内容1","内容2"};
  String[] fields={"content","title"};
  Occur[] occ={Occur.SHOULD,Occur.SHOULD};
  Query query = MultiFieldQueryParser.parse(stringQuery, fields, occ, analyzer);
  9、TopDocs: 指针容器,指向结果集中的文档

lucene 基础知识点的更多相关文章

  1. fastclick 源码注解及一些基础知识点

    在移动端,网页上的点击穿透问题导致了非常糟糕的用户体验.那么该如何解决这个问题呢? 问题产生的原因 移动端浏览器的点击事件存在300ms的延迟执行,这个延迟是由于移动端需要通过在这个时间段用户是否两次 ...

  2. .NET基础知识点

    .NET基础知识点   l  .Net平台  .Net FrameWork框架   l  .Net FrameWork框架提供了一个稳定的运行环境,:来保障我们.Net平台正常的运转   l  两种交 ...

  3. JavaScript 开发者经常忽略或误用的七个基础知识点(转)

    JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...

  4. JavaScript 开发者经常忽略或误用的七个基础知识点

    JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...

  5. JavaScript开发者常忽略或误用的七个基础知识点

    JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...

  6. JavaScript语言基础知识点图示(转)

    一位牛人归纳的JavaScript 语言基础知识点图示. 1.JavaScript 数据类型 2.JavaScript 变量 3.Javascript 运算符 4.JavaScript 数组 5.Ja ...

  7. JavaScript 语言基础知识点总结

    网上找到的一份JavaScript 语言基础知识点总结,还不错,挺全面的. (来自:http://t.cn/zjbXMmi @刘巍峰 分享 )  

  8. c语言学习之基础知识点介绍(三):scanf函数

    本节继续介绍c语言的基础知识点. scanf函数:用来接收用户输入的数据. 语法:scanf("格式化控制符",地址列表); 取地址要用到取地址符:&(shift+7) 例 ...

  9. c语言学习之基础知识点介绍(二):格式化控制符和变量的补充

    上节简单介绍了c语言中的一些基础知识点,本节将对之前介绍的不够详细的知识点进行补充. 格式化控制符的消息介绍: %d的其他控制符: 1.%md:m代表这个整数位占用多少位,m是一个整数.实际数字不足的 ...

随机推荐

  1. HTML5 Boilerplate - 让页面有个好的开始

    最近看到了HTML5 Boilerplate模版,系统的学习与了解了一下.在各种CSS库.JS框架层出不穷的今天,能看到这么好的HTML模版,感觉甚爽.写篇博客,推荐给大家使用.   一:HTML5 ...

  2. Jquery的事件操作和文档操作

    对于熟悉前端开发的小伙伴,相信对于Jquery一定不陌生,相对于JavaScript的繁琐,Jquery更加的简洁,当然简洁不意味着简单,我们可以使用Jquery完成我们想要实现全部功能,这里为小白们 ...

  3. select、poll、epoll之间的区别总结

    select.poll.epoll之间的区别总结 05/05. 2014 select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪 ...

  4. PHP代码优化

    1 代码优化 1 尽量静态化 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍. 当然了,这个测试方法需要在十万级以上次执行,效果才明显. 其实静态方法和 ...

  5. Windows下Visual studio 2013 编译 Audacity

    编译的Audacity版本为2.1.2,由于实在windows下编译,其源代码可以从Github上取得 git clone https://github.com/audacity/audacity. ...

  6. BPM配置故事之案例11-操作外部数据源

    小明:可以获取ERP数据了-- 老李:哦,这么快?小伙子,我非常看好你,来来,别急着走,再陪我聊会-- 小明:--您老人家不是又要改流程吧? 老李:没有没有,哎嘿嘿嘿,我们这不都是为公司效率着想嘛,这 ...

  7. 烂泥:wiki系统confluence5.6.6安装、中文、破解及迁移

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它 ...

  8. BZOJ 3110: [Zjoi2013]K大数查询 [树套树]

    3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 6050  Solved: 2007[Submit][Sta ...

  9. BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]

    1103: [POI2007]大都市meg Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2221  Solved: 1179[Submit][Sta ...

  10. 免费开源的 .NET 分布式组件库 Exceptionless Foundatio

    前言 在互联网时代,分布式应用.系统变得越来越多,我们在使用 .Net 技术构建分布式系统的时候,需要使用到一些组件或者是助手库来帮助我们提高生产力以及应用程序解耦,但是纵观.Net圈,能够符合要求的 ...