Lucene是apache旗下的顶级项目,是一个全文检索工具包。算法
Lucene就是一个能够建立全文检索引擎系统的一堆jar包.可使用它来构建全文检索引擎系统,可是它不能独立运。数据库
放在tomcat下能够独立运行,对外提供全文检索服务.apache
官方网站:http://lucene.apache.org/ tomcat
版本:lucene4.10.3工具
Jdk要求:1.7以上优化
IDE:Eclipse网站
域名:词 这样的形式,spa
它里面有指针执行这个词来源的文档指针
索引库: 放索引的文件夹(这个文件夹能够本身随意建立,在里面放索引就是索引库)对象
Term词元: 就是一个词, 是lucene中词的最小单位
Document对象,一个Document中能够有多个Field域对象,Field域对象中是key value键值对的形式:有域名和域值,
一个document就是数据库表中的一条记录, 一个Filed域对象就是数据库表中的一行一列
这是一个通用的存储结构.
建立索引和全部时所用的分词器必须一致
是否分词:
分词的做用是为了索引
须要分词: 文件名称, 文件内容
不须要分词: 不须要索引的域不须要分词,还有就是分词后无心义的域不须要分词
好比: id, 身份证号
是否索引:
索引的的目的是为了搜索.
须要搜索的域就必定要建立索引,只有建立了索引才能被搜索出来
不须要搜索的域能够不建立索引
须要索引: 文件名称, 文件内容, id, 身份证号等
不须要索引: 好比图片地址不须要建立索引, e:\\xxx.jpg
由于根据图片地址搜索无心义
是否存储:
存储的目的是为了显示.
是否存储看我的须要,存储就是将内容放入Document文档对象中保存出来,会额外占用磁盘空间, 若是搜索的时候须要立刻显示出来能够放入document中也就是要存储,这样查询显示速度快, 若是不是立刻马上须要显示出来,则不须要存储,由于额外占用磁盘空间不划算.
TermQuery:
根据词进行搜索(只能从文本中进行搜索)
QueryParser:
根据域名进行搜索,能够设置默认搜索域,推荐使用. (只能从文本中进行搜索)
NumericRangeQuery:
从数值范围进行搜索
BooleanQuery:
组合查询,能够设置组合条件,not and or.从多个域中进行查询
must至关于and关键字,是而且的意思
should,至关于or关键字或者的意思
must_not至关于not关键字, 非的意思
注意:单独使用must_not 或者 独自使用must_not没有任何意义
MatchAllDocsQuery:
查询出全部文档
MultiFieldQueryParser:
能够从多个域中进行查询,只有这些域中有关键词的存在就查询出来.