申明:原文来自 http://xiewei906.blog.sohu.com/98440293.html
1 lucene 简介
1.1
什么是
lucene
Lucene 是一个全文搜索框架,而不是应用产品。因此它并不像 www.baidu.com 或者 google
Desktop 那么拿来就能用,它只是提供了一种工具让你能实现这些产品。
1.2 lucene
能做什么
要 回答这个问题,先要了解 lucene 的本质。实际上 lucene 的功能很单一,说到底,就是你
给它若干个字符串,然后它为你提供一个全文搜索服务,告诉你 你要搜索的关键词出现在
哪里。知道了这个本质,你就可以发挥想象做任何符合这个条件的事情了。你可以把站内新
闻都索引了,做个资料库;你可以把一个数据库 表的若干个字段索引起来,那就不用再担
心因为“%like%”而锁表了;你也可以写个自己的搜索引擎……
1.3
你该不该选择
lucene
下面给出一些测试数据,如果你觉得可以接受,那么可以选择。
测试一:250 万记录,300M 左右文本,生成索引 380M 左右,800 线程下平均处理时间
300ms。
测试二:37000 记录,索引数据库中的两个 varchar 字段,索引文件 2.6M,800 线程下平均
处理时间 1.5ms。
2 lucene 的工作方式
lucene 提供的服务实际包含两部分:一入一出。所谓入是写入,即将你提供的源(本质是字
符串)写入索引或者将其从索引中删除;所谓出是读出,即向用户提供全文搜索服务,让用
户可以通过关键词定位源。
2.1
写入流程
源字符串首先经过 analyzer 处理,包括:分词,分成一个个单词;去除 stopword(可选)。
将源中需要的信息加入 Document 的各个 Field 中,并把需要索引的 Field 索引起来,把需要
存储的 Field 存储起来。
将索引写入存储器,存储器可以是内存或磁盘。
2.2
读出流程
用户提供搜索关键词,经过 analyzer 处理。
对处理后的关键词搜索索引找出对应的 Document。
用户根据需要从找到的 Document 中提取需要的 Field。
3 一些需要知道的概念
lucene 用到一些概念,了解它们的含义,有利于下面的讲解。
3.1 analyzer
Analyzer 是分析器,它的作用是把一个字符串按某种规则划分成一个个词语,并去除其中
的无效词语,这里说的无效词语是指英文中的“of”、 “the”,中文中的 “的”、“地”等词语,
这些词语在文章中大量出现,但是本身不包含什么关键信息,去掉有利于缩小索引文件、提