Spark查询只需用户输入关键字即可,而无需输入复杂的图结点关系就能得到查询结果。但其只能提取字符串相似匹配,通过修改可以使其支持其它转换。NeMa支持图结构和字符串相似度匹配(Jaccard)。
3.本文方法
3.1.线下操作
- 定义度量函数(节点匹配代价、边匹配代价、匹配函数)
- 确定参数
- 冷启动
(2) 将查询模板中的一些结点和边用转换函数进行转化得到查询Q;
(3) 提取和Q精确匹配的子图Qe;
(4) (Q, Q’)与(Q, Qe)组成训练集。
3.2在线查询
图查询是NP-hard问题,因此本文给出了两个启发式。
3.2.1 启发式1
将图匹配的代价累加到一个结点上,则每个结点的匹配得分可以代表包括该节点在内的图匹配代价。
每个结点计算公式:
其中mji(t)(ui)表示第t次迭代uj结点对节点ui匹配贡献的得分。
3.2.2 启发式2
利用启发式1进行计算时需要计算大量的结点。由结点匹配代价计算公式可得,对于任意的查询结点v经过相同的转换函数匹配代价相同。基于此将经过同一个结点转换的结点浓缩为一个结点计算,则可以有效减少结点得分的计算个数。由浓缩结点组成的图成为概要图。若查询图中两个结点之间存在边,则连接概要图中对应的结点,而与图数据库无关。其中,边的匹配代价为图数据库中所有这类边的匹配代价的上界。
基于这种发现问题的求解步骤为:
(1) 构造概要图;
(2) 在概要图上利用启发式1计算;
(3) 利用概要图中计算出的结果求原图中与之对应子图的得分。
循环执行直到找到k个结果。
4.online demo