深入浅出 jackrabbit 十三 查询之AST和QT
2009-09-17 00:00:00 来源:WEB开发网如此下去,整个QT会被遍历,并生成lucene的query对象,但是如果有同学也去读源码,那么可能会发现在处理Order这个语义时,visitor直接跳过了:
Java代码
public Object visit(OrderQueryNode node, Object data) {
return data;
}
没错,它是故意的,因为order的语义在jackrabbit里被独立拿来出来,生成需要排序的field。
生成lucene的query对象之后,就可以名正言顺的调用下面这段代码了:
searcher.search(query, new Sort(sortFields))
其中的sortFields是在queryimpl的execute方法里独立拿出来,并生成了sortfields:
Java代码
OrderQueryNode orderNode = root.getOrderNode();
OrderQueryNode.OrderSpec[] orderSpecs;
if (orderNode != null) {
orderSpecs = orderNode.getOrderSpecs();
} else {
orderSpecs = new OrderQueryNode.OrderSpec[0];
}
Name[] orderProperties = new Name[orderSpecs.length];
boolean[] ascSpecs = new boolean[orderSpecs.length];
for (int i = 0; i < orderSpecs.length; i++) {
orderProperties[i] = orderSpecs[i].getProperty();
ascSpecs[i] = orderSpecs[i].isAscending();
}
那么说到这里,jackrabbit在查询时候的一些关键流程就告一段落了,唯一不足的是本文只是描述了一条xpath语句从字符串到QT,再到lucene的query对象这样一个概要流程,在下一篇文章中,我们将会来着重看一下lucene是怎么使用这颗QT的。
Tags:深入浅出 jackrabbit 十三
编辑录入:爽爽 [复制链接] [打 印]- ››深入浅出实战攻防恶意PDF文档
- ››深入浅出ShellExecute
- ››深入浅出URL编码
- ››深入浅出Java多线程程序设计
- ››十三款国内知名即时聊天工具点评
- ››深入浅出 jackrabbit 八 索引合并(上)
- ››深入浅出 jackrabbit 九 索引合并(下)
- ››深入浅出 jackrabbit 十 redolog 和 recovery.doc...
- ››深入浅出 jackrabbit 十一 jackrabbit改进要点
- ››深入浅出 jackrabbit 十二 key-value存储系统
- ››深入浅出 jackrabbit 十三 查询之AST和QT
- ››深入浅出 jackrabbit 一
更多精彩
赞助商链接