For the filter and enumerate techniques, naive storage designs such as per-node candidate list or match matrix perform poorly during enumeration as they lose graph topology and have to repeatedly verify edges by searching on the data graph.
Recent works [1]}, [2]} adopt an approach where explicit candidate lists are collected and stored along with the graph topology. Since it stores the matches of each query node, and their connections to the matches of the neighboring query nodes, search space becomes very compact. Figure REF (a) shows the index constructed by CECI [2]} for the data graph in Figure REF (b). Each node in the query tree contains a key-value store, where the keys \(v_p\)  are the matches of the parent query node \(u_p\)  and the values are the list of nodes \(\lbrace v\rbrace \)  that match \(u\)  and are adjacent to \(v_p\) .In addition to reducing search space, they obtain better access throughput since the matches of a node are stored consecutively.
