Lucene.net建的索引,这个索引的结构是什么样子?索引为什么可以提高访问速度原理是什么?
Lucene的索引结构从大到小分为以下几个概念:index,segments,document,field,term
index(索引):一个索引,包括所有需要的信息内容
segments(段):可以理解为一个子索引,每当往index中新加入一个doc时,都会新生成一个segments保存这个doc
document:一般以document为单位往index中添加记录,一个document由几个field组成
field:一个document通常被分为几个field,用于保存不同的信息,如数据库的一条记录,不同的字段就是
不同的field,当搜索时,可以指定在哪个field进行搜索,field由一组term组成
term(词条):最基本的索引单位,一般每个field由很多个term组成;term由一对值组成,一个值表示他属于哪个field,另一个表示他本身的值,所以两个不同的field里相同的string并不是一个term
索引就是通过事先排好序,从而在查找时可以应用二分查找等高效率的算法。一般的顺序查找,复杂度为O(n),而二分查找复杂度为O(log2n)。当n很大时,二者的效率相差及其悬殊。