2016-09-26 60 views
4

碰到這樣一個場景,我需要編寫使用GraphTraversal API,它在具有不同條款一樣,含有鈦查詢等Titan圖遍歷查詢中的P.test(V值)如何工作?

內部形成我利用P.within(..),P的必備條款.inside(..),P.test(..)等謂詞。以下是遍歷實例的示例

traversal.has("field1", P.within(new String[]{"value1", "value2"})). 
      has("field2", P.test((r1, r2) -> { 
        return ((String)r1)).contains((String)r2)); 
       }, "someVal")); 

我想了解Titan如何在內部評估此查詢嗎? 在內存中加載所有頂點後是否評估所有謂詞?

回答

1

P.within這樣的標準謂詞將盡可能優化(在您的示例中,如果您的索引超過field1,Titan會使用它)。另一方面,自定義謂詞不能被優化;正如你所說,泰坦會將所有的頂點加載到內存中,然後應用過濾謂詞。