您的位置:首页 > 产品设计 > UI/UE

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

2016-08-28 10:32 429 查看
//把 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Lucene Query rewrite