多看几遍,慢就是快 1.1 应对信息爆炸 1.2 Lucene 是什么 1.2.1 Lucene 能做些什么 1.2.2 Lucene 的历史 1.3 Lucene 和搜索程序组件 基本概念 索引操作 将原始数据引入可被高效查找的对照表中,以便能够对这些内容进行快速搜索. 这里的对照表的结构是什么样的?是二叉排序树还是红黑树? 索引是一个精心设计的数据结构. 1.3.1 索引组件 获取内容 如果内容是存在文件系统特定目录下的XML文档,或者是组织有序的数据库中的内容,获取内容很简单. 但是如果分…
lucene的介绍网上有好多,再写一遍可能有点多余了. 使用lucene之前,有一系列的疑问 为什么lucene就比数据库快? 倒排索引是什么,他是怎么做到的 lucene的数据结构是什么样的,cpu消耗,内存消耗主要因为什么 lucene的索引流程以及查询流程是什么样的 推荐两篇文章,更进一步了解lucene 可以参考lucene与数据库对比部分 http://www.chedong.com/tech/lucene.html 可以参考第一篇和第二篇部分对lucene有一部分了解 http://…
最早是在百度贴吧里看到的lucene这个名称,只知道跟搜索引擎有关,因为工作中一直以来没有类似的需求,所以没有花时间学习这方面的知识. 刚过完年,公司不忙,自己闲不住把<Netty权威指南>大致刷了起来(后续有时间再把Netty这块的一些知识分享出来).不过就在前几天,领导突然说后面有个新项目准备让我来做,目前还在整理需求中.然后巴拉巴拉简单的跟我讲了一下,大概就是说去年我给客户做了个小的WAP网站,人家觉还行今年准备搞个大一点的,门户+文库+机器人客服,这个文库需要搜索功能,用户在搜索框里面…
在学习Lucene之前呢,我们当然首先要了解下什么是Lucene. 0x01 什么是Lucene ? Lucene是一套用于全文检索和搜索的开放源代码程序库,由Apache软件基金会支持和提供. Lucene提供了一个简单却强大的应用程序接口,能够做全文索引和搜索,在Java开发环境里Lucene是一个成熟的免费开放源代码工具: 就其本身而论,Lucene是现在并且是这几年,最受欢迎的免费Java信息检索程序库. Lucene最初是由Doug Cutting所撰写的,他贡献出Lucene的目标是…
最近想提高下自己的能力,也是由于自己的项目中需要用到Lucene,所以开始接触这门富有挑战又充满新奇的技术.. 刚刚开始,只是写了个小小的demo,用了用lucene,确实很好   创建索引 DataTable dt = DB.SqlHelper.ExecuteDataset(connectionString, CommandType.Text, "select top 1000 id,title,productsummary from dbo.products").Tables[0]…
Lucene是一个信息检索工具库,而不是一个完整的搜索程序 搜索程序 Lucene索引核心类 Lucene索引核心类: Document: 文档对象代表一些域(field)的集合 Field: 每个文档都包含一个或多个不同命名的filed,这些field包含在Field类中 Analyzer: 文本文件再被索引前需要经过Analyzer(分析器)处理 IndexWriter: 写索引操作(新建索引.打开已有索引.更新已有信息.删除已有信息) Directory: 描述Lucene索引的存放位置…
最近项目中要用到模糊查询,开始研究lucene,期间走了好多弯路,总算实现了一个简单的demo. 使用的lucene jar包是3.6版本. 一:建立数据库表,并加上测试数据.数据库表:UserInfo 二:新建java project,并引入lucene jar包.http://lucene.apache.org/ 三:为数据库表建立索引及利用索引查数据: import java.io.File; import java.io.IOException;import java.sql.Conne…
一.Lucene搜索过程总论 搜索的过程总的来说就是将词典及倒排表信息从索引中读出来,根据用户输入的查询语句合并倒排表,得到结果文档集并对文档进行打分的过程. 其可用如下图示: 总共包括以下几个过程: IndexReader打开索引文件,读取并打开指向索引文件的流. 用户输入查询语句 将查询语句转换为查询对象Query对象树 构造Weight对象树,用于计算词的权重Term Weight,也即计算打分公式中与仅与搜索语句相关与文档无关的部分(红色部分). 构造Scorer对象树,用于计算打分(T…
在进行Lucene的搜索过程解析之前,有必要单独的一张把Lucene score公式的推导,各部分的意义阐述一下.因为Lucene的搜索过程,很重要的一个步骤就是逐步的计算各部分的分数. Lucene的打分公式非常复杂,如下: 在推导之前,先逐个介绍每部分的意义: t:Term,这里的Term是指包含域信息的Term,也即title:hello和content:hello是不同的Term coord(q,d):一次搜索可能包含多个搜索词,而一篇文档中也可能包含多个搜索词,此项表示,当一篇文档中包…
Lucene的索引里面存了些什么,如何存放的,也即Lucene的索引文件格式,是读懂Lucene源代码的一把钥匙. 当我们真正进入到Lucene源代码之中的时候,我们会发现: Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程. Lucene的搜索过程,就是按照此文件格式将索引进去的信息读出来,然后计算每篇文档打分(score)的过程. 本文详细解读了Apache Lucene - Index File Formats(http://lucene.apache.or…