//把 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;
}
拆解Cluene系列(22)——Query的再解釋
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.