
# 使用图探索功能分析图
提供图相关工具来探索图。
#### 路径拓展
利用Filtered-query-API原理，对k跳过程进行逐层过滤，列出满足过滤条件的第k跳节点或边。Filtered-query接口说明可参考[Filtered-query API](https://support.huaweicloud.com/api-ges/ges_03_0331.html)。
在图引擎编辑器左侧探索区的"路径拓展"模块内，填写以下参数：
- **路径起点** ：查询起始节点ID列表。有以下几种方法可以查询：
  1. 框选点的方式：画布上已经有点的情况下，（Shift+ 鼠标左键拖动）框选想要查询的点，单击鼠标右键选择"设为路径起点"（有路径拓展功能才能展示该选项），被框选点的点ID会自动填写到路径起点框内。框选点ID超过5个时，单击该框，会弹出的窗口中会显示当前被框选的所有点ID，您可以在窗口中添加点ID或者删除不想查询的点ID，选择完成后单击![](https://support.huaweicloud.com/usermanual-ges/zh-cn_image_0000002374885485.png)按钮，画布上会呈现查询结果。
     图1框选点的方式   
     ![](https://support.huaweicloud.com/usermanual-ges/zh-cn_image_0000002480552098.png) 
  
  2. 随机选的方式：单击路径起点框旁的"随机选"按钮，系统会帮您自动选择图中的点，填入点ID。您可以单击该框，删除点ID或者在显示的下拉菜单栏中选择想增加点ID，选择完成后单击![](https://support.huaweicloud.com/usermanual-ges/zh-cn_image_0000002341087446.png)按钮，画布上会呈现查询结果。
  
  3. 单个点的输入方式：您可以在框内输入想要查询的点ID，输入完成后按enter（回车）键。
  
  4. 批量输入点的方式：您可以在框内连续输入多个点ID，点ID之间用英文逗号隔开，输入完成后按enter（回车）键。当输入的点ID超过5个时，鼠标单击框内会弹出一个窗口显示当前输入的所有点ID ，您可以继续在窗口内输入点ID。
     ![](https://support.huaweicloud.com/usermanual-ges/public_sys-resources/note_3.0-zh-cn.png)
     请勿重复输入同一个点ID或者输入空值。当输入的点ID名称本身包含英文逗号时，请用 \&#44; 代替英文逗号，防止识别出现错误。
     ![](https://support.huaweicloud.com/usermanual-ges/zh-cn_image_0000002480712946.png)
     
   
- **过滤条件列表** ：执行重复的过滤条件列表，数组的每个元素分别对应每一层要做的查询和过滤条件。
  图2过滤条件列表   
  ![](https://support.huaweicloud.com/usermanual-ges/zh-cn_image_0000002341087426.png)
  您需要设置以下参数：
  - 跳数：想要过滤的条件数。
  
  - 过滤条件：和跳数的数量相对应，即有几个跳数就有几个过滤条件。单击过滤条件框会弹出设置过滤条件的窗口，在窗口内输入过滤条件语法。 语法说明：has操作符用于判断属性名key是否存在或者属性名key的值是否为value，hasLabel操作符用于判断label值是否为values中的一个，and操作符需同时满足A与B条件（可嵌套），or操作符满足A与B条件其一即可（可嵌套）。
    图3设置过滤条件   
    ![](https://support.huaweicloud.com/usermanual-ges/zh-cn_image_0000002374885497.png)
    ![](https://support.huaweicloud.com/usermanual-ges/public_sys-resources/note_3.0-zh-cn.png)
    1. 您可以在空白的过滤条件输入框内双击鼠标左键，可查看样例语法。样例语法说明如下： has(PropertyName)：属性名是否存在。
       has(PropertyName, PropertyValue)：属性名是否为PropertyValue。
       hasLabel(LabelName1,LabelName2)：label值是否为LabelName1或LabelName2。
       or(has('name', 'peter'), has('age', '30'))：表示满足名字为Peter或年龄为30其中一个条件即可。
       and(has('person'),or(has('name','peter'),has('age','30')))：表示同时满足has('person')和or(has('name','peter'),has('age','30'))，属性name为peter且age为30。
       
    
    2. 只有一条过滤条件数据时，删除、上调和下调按钮置灰，第一条数据不允许上调，最后一条数据不允许下调，设置过滤条件的上限是20（最大跳数）。
      
    
- **显示路径过程**：是否输出不在最终完整路径上的点，默认为false。
- **高级设置** ：其中包括拓展策略。
  拓展策略：traversal策略。包括如下两个选项：
  - ShortestPath：在traversal的过程中取到起始点到各点的最短路径，该模式能够有效降低多跳查询中指数增长的查询量。
  
  - Walk：在traversal的过程中不会过滤掉重复的点。
  
  
  ![](https://support.huaweicloud.com/usermanual-ges/public_sys-resources/note_3.0-zh-cn.png)
  ![](https://support.huaweicloud.com/usermanual-ges/zh-cn_image_0000002340927670.png)
  例如上图，查询从a出发的第三跳邻居：
  传统的walk路径为：a-\>c-\>a-\>b，a-\>c-\>d-\>f，a-\>c-\>d-\>c，a-\>c-\>a-\>c。
  可以观察到，其中a,c重复出现在路径中(如a-\>c-\>a-\>b，a-\>c-\>d-\>c)。如果希望减少重复路径从而加快查询过程，降低多跳查询中的查询量，可以使用ShortestPath模式。
  使用ShortestPath模式，查询的路径过程仅为：a-\>c-\>d-\>f 。
  
 
