WEB开发网
开发学院软件开发Java 深入浅出 jackrabbit 十三 查询之AST和QT 阅读

深入浅出 jackrabbit 十三 查询之AST和QT

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示: 如此下去,整个QT会被遍历,深入浅出 jackrabbit 十三 查询之AST和QT(6),并生成lucene的query对象,但是如果有同学也去读源码,再到lucene的query对象这样一个概要流程,在下一篇文章中,那么可能会发现在处理Order这个语义时,visitor直接跳过了: Jav

如此下去,整个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的。

上一页  1 2 3 4 5 6 

Tags:深入浅出 jackrabbit 十三

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接