lucene+nutch学习笔记四:搜索引擎信息索引
在实际的生活中,Nutch只能从网络上收集网页,而对网页本身的分析却不能很好的处理。搜索引擎普遍采用全文检索技术,平常的word的字处理工具的查询采用的是顺序扫描文件,这种做法效率比较低,遇到大型的文件则根本就不使用。所以出现了索引这个技术。
概括来说: 索引就是给一个文本内容按照一定的格式进行数据重排,使其便与查找。索引技术的核心是倒排索引的结构。倒排索引(Inverted Index)
索引的分类:
按照类型来分:可以分为:字索引,词索引,短语索引,混合索引(实现比较复杂)。
按照管理方式分:可以分为:静态索引和动态索引。
Lucene的索引的介绍:主要包括独立索引模式和复合索引模式。独立索引模式是指每个document独立索引成一个文件,这样数度快,但不适合大量的文档。复合索引就是把所有的Document索引成一个文件,这个文件的内容不同,也可以包括异构型文档。
索引文件可以存放在磁盘和内存中,在磁盘中,可以重复利用,但增加了IO,在内存中,虽数度快,但不能保存。lucene的索引以文件的形式存储,不依赖特定的数据库和操作系统,它是跨平台的。
Lucene的索引结构:
可以分为,索引,索引断,索引文档,索引域和索引项几个。每个索引的结构有一个或多个索引段组成,每个段包含一个或多个文档,每个文档管理一个或多个域,每个域有一个或多个索引项组成。每个索引项是一个索引数据。
1索引(INDEX)
2索引段(SeGment)
3索引文档(Document)
4索引域(Field)
5索引项(Term)
其中Field有多个构造函数,下面这个是参数最多的一个。注意是lucene2.3目前最新为2.4
public Field(String name, String value, Store store, Index index, TermVector termVector) {
name,是一个字符串,表示的是需要被索引的属性的名字,可以是name,path,content。
value,是值,可以为字符串,也可以是Reader类型
store,表示数据本身是否需要存储,有YES,NO,COMPRESS 三中选择。
index,表示数据是否需要索引。也就是说这个数据是否哪来查询,这里和数据库不同,数据库的索引字段可以查询,没被索引的字段也可以查询,但这里没被索引的Field不能查询。
A:TOKENIZED:分词并建立索引
B:NO :不建立索引
C:UN_TOKENIZED把内容作为一个整体,避免分词的麻烦。
D:NO_NORMS 禁用分析器处理。
termVector:表示域内的信息是否需要分词,通常在中文搜索中使用。