自学lucene的一些简单原理

[img][/img]刚开始对lucene很好奇,于是自己就买本书来看看,学了2天大概上掌握了一点lucene的原理,在这里总结一下,以免时间长了忘记,并且可以给需要的人提供以下参考!

刚开始学习学习一门技术最重要的就是理解它的原理,还有它的API,只有大体上理解这些以后才能更好的学习它!

(1)lucene是一个全文搜索引擎,是apache的一个顶级项目,在国内应用也很广泛!

(2)lucene建立索引文件的简单原理和算法

(a) 比如有两个文本文件 1.txt 里面内容为 He lived in beijing另一个文件为2.txt 里面内容为

he is my friend

(b)lucene在建立索引文件之前 需要利用分词器对文件内容等进行分词 比如第一个文件的内容就被分为

[ he][live][beijing]



第二个文件被分为

[he ][is][my][friend]

(因为 in 通常无意义所以就过滤掉了, 同时 live 可以把包含lived lives的文章也给找出来 所以 就把 lived 分词为live ,同时小写的也可以把包含大写的文章找出来 所以就把大写的分词为小写的 比如 He 分词为 he)

这个时候每一个文本分词出来的文件放在一个内存中的lucene中的Document对象中,最好把多个内存中的Document

合并成一个segment上!

同时lucene是倒排序的索引,最好结构大概就是这样:



刚开始对lucene很好奇,于是自己就买本书来看看,学了2天大概上掌握了一点lucene的原理,在这里总结一下,以免时间长了忘记,并且可以给需要的人提供以下参考!

刚开始学习学习一门技术最重要的就是理解它的原理,还有它的API,只有大体上理解这些以后才能更好的学习它!

(1)lucene是一个全文搜索引擎,是apache的一个顶级项目,在国内应用也很广泛!

(2)lucene建立索引文件的简单原理和算法

(a) 比如有两个文本文件 1.txt 里面内容为 He lived in beijing另一个文件为2.txt 里面内容为

he is my friend

(b)lucene在建立索引文件之前 需要利用分词器对文件内容等进行分词 比如第一个文件的内容就被分为

[ he][live][beijing]



第二个文件被分为

[he ][is][my][friend]

(因为 in 通常无意义所以就过滤掉了, 同时 live 可以把包含lived lives的文章也给找出来 所以 就把 lived 分词为live ,同时小写的也可以把包含大写的文章找出来 所以就把大写的分词为小写的 比如 He 分词为 he)

这个时候每一个文本分词出来的文件放在一个内存中的lucene中的Document对象中,最好把多个内存中的Document

合并成一个segment上!

同时lucene是倒排序的索引,最好结构大概就是这样:


关键字

文章号

出现频率

出现位置

[img]
[img]http://dl.iteye.com/upload/attachment/296774/85792c00-ecc7-36bf-ac71-99e203438c9e.png[/img]
[/img]


(因为是lucene按照字母顺序就行排序的)

(2)Document可以简单理解为一个文本文件(但实际上不是啊)



(3)Field的理解 Field 可以理解为Map类型的 它就是一些属性的集合,比如 title ,body,time 等

具体可以看Field的类:

public final class Field extends AbstractField implements Fieldable, Serializable {

/** Specifies whether and how a field should be stored. */
public static final class Store extends Parameter implements Serializable {

private Store(String name) {
super(name);
}

public Field(String name, String value, Store store, Index index) {
this(name, value, store, index, TermVector.NO);
}
public Field(String name, String value, Store store, Index index, TermVector termVector) {
this(name, true, value, store, index, termVector);
}
有很多个构造函数我这里仅仅列两个

其中segmen里面包含Document,document里面包含Field,Field里面包含term !
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值