lucene
文章平均质量分 77
chengqianl
lucene solr
展开
-
lucene indexwriter的相关类图
最近在学习lucene,看的比较迷糊,所以 就把类图画了原创 2010-08-26 10:16:32 · 172 阅读 · 0 评论 -
DocumentsWriterThreadState 创建过程序列图
摘自org.apache.lucene.index.DocumentsWriter.DefaultIndexingChain.getChain() 注释 /* This is the current indexing chain: DocConsumer / DocConsumerPerThread --> code: DocFieldP...原创 2010-08-26 15:04:42 · 202 阅读 · 0 评论 -
DocFieldProcessorPerField 创建的过程序列图
document的写入是通过DocFieldProcessorPerThread类做的,实际上在lucene的文件里面(_x.fdx,_x.fdt,_x.fnm)没有document的概念,存储的是filed属性和值,filed的值是存储在_x.fdt文件里面 ,field的属性是存在在_x.fnm,(属性就是是否分词,是否存储等等) 而field的写入是通过DocFieldProcessorPe...原创 2010-08-26 15:19:01 · 116 阅读 · 0 评论 -
DefaultSkipListReader查找docId
DefaultSkipListReader查找docIdMultiLevelSkipListReaderpublic MultiLevelSkipListReader(IndexInput skipStream, int maxSkipLevels, int skipInterval) {/**每个层的文件文件的IndexInput读取对象,是通过定位到每个文件的相对应的skiptab...原创 2010-09-02 15:33:18 · 171 阅读 · 0 评论 -
lucene的排序和缓存的应用
Lucene的排序是通过FieldComparator及其子类实现的,以StringOrdValComparator作为例子详细说明lucene的排序的基于缓存FieldCache实现。思路:用一个数组保存某个filed字段对应的所有的document的最大的一个term。这个数组的index就是docId,值对应所有这个filed所有term的数组的indexStringOr...原创 2010-09-13 15:00:27 · 185 阅读 · 0 评论 -
多个term查询的步骤
多个term查询的步骤分别查找每个term对应的结果查询步骤Term :a -----》tii-------》tis-------》frg 保存结果 --- TermScorer1Term :b -----》tii-------》tis-------》frg 保存结果--- TermScorer2得到结果集分别缓存在TermScorer二个数组里面...原创 2010-09-13 15:15:56 · 665 阅读 · 0 评论 -
创建IndexSearcher的时候到底做了哪些事情
大致的事情就是读取segment.gen文件,从这个文件里面的数据找出segments_x(x是下一个段的名字,是一个36进制的数)这个文件,读segments_x这个文件,因为segment_x记录的索引的segment的元数据信息,读取segment信息后,在分别初始化每个segment的reader对象SegmentReader,SegmentReader会利用内部类CoreReaders,...原创 2010-09-27 09:22:36 · 475 阅读 · 0 评论 -
OpenBitSet和OpenBitSetIterator
OpenBitSet和OpenBitSetIterator算法的思想是用一个long的数组的index和这个这个数组的某个值的某一位表示一个数,如果是一个long数组,如果不存在重复的情况下,最大可达到64倍的压缩, 算法的实现过程以long OpenBitSet这个类实现的一个上面提到的记录数据的数组public OpenBitSet(long numBits) { ...原创 2010-11-11 15:18:27 · 125 阅读 · 0 评论 -
OpenBitSet和OpenBitSetIterator在TermRangeQuery中的运用
OpenBitSet和OpenBitSetIterator在TermRangeQuery中的运用在MultiTermQuery 的rewrite方法中,如果 if (pendingTerms.size() >= termCountLimit || docVisitCount >= docCountCutoff) 的就会使用MultiTermQueryWrapperFilter,如果查询...原创 2010-11-16 16:06:16 · 112 阅读 · 0 评论