拆解Cluene系列(22)——Query的再解釋

//把 a解釋成b, 然後把b解釋成c,把c解釋成d,中間的b c需要刪除掉。
Query* IndexSearcher::rewrite(Query* original) {
	Query* query = original;
	Query* last = original;
	for (Query* rewrittenQuery = query->rewrite(reader); 
		rewrittenQuery != query;
		rewrittenQuery = query->rewrite(reader)) {
			query = rewrittenQuery; //query 是latest 的
			if ( query != last && last != original ){ //last 此時是中間的,如果last不等於latest 也不等於最早的,因此last是中間的
				_CLDELETE(last);
			}
			last = query;
	}
	return query;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章