//把 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的再解释
最新推荐文章于 2020-12-14 22:20:33 发布