Class GraphQuery


  • public class GraphQuery
    extends Query
    A query to traverse graph-like relationships in indexed data. Use of this query assumes your data is setup to represent a directed graph. Each document represents a node in the graph and its connecting edges: the "from" field holds an identifier for the node itself, with outgoing edges represented by the node IDs held in the "to" field. The starting points or seeds for the traversal are identified by the result set of the provided subquery. The result set of this query contains all documents/nodes reachable via graph traversal from the provided seeds.
    • Constructor Detail

      • GraphQuery

        public GraphQuery​(java.lang.String from,
                          java.lang.String to,
                          Query query)
    • Method Detail

      • getTo

        public java.lang.String getTo()
        Returns:
        the field name that holds each document's outgoing edges. The values in this field should match values held by the "from" field in other documents.
      • getFrom

        public java.lang.String getFrom()
        Returns:
        the field name that holds an identifier for each document/node in the graph.
      • getQuery

        public Query getQuery()
        Returns:
        a query whose result set documents are used as seeds for the graph traversal.
      • getChildQueries

        public java.util.List<Query> getChildQueries()
        Description copied from class: Query
        Returns all the children of the query in question. The returned List is provided as a copy - changes made to it do not impact the originating Query object in any way.
        Specified by:
        getChildQueries in class Query
      • replaceChildQuery

        public boolean replaceChildQuery​(Query toReplace,
                                         Query replacement)
        Description copied from class: Query
        Swap 'replacement' in as a replacement, if 'toReplace' is currently a child of this Query object. Because a tree of Query objects might conceivably have repeated clauses, this method is implemented to test 'toReplace' using reference-equality instead of value-equality.
        Specified by:
        replaceChildQuery in class Query
        Returns:
        true if a replacement was made, false otherwise.
      • removeChildQuery

        public boolean removeChildQuery​(Query toRemove)
        Description copied from class: Query
        Remove 'toRemove', if 'toRemove' is currently a child of this Query object. Because a tree of Query objects might conceivably have repeated clauses, this method is implemented to test 'toRemove' using reference-equality instead of value-equality.
        Specified by:
        removeChildQuery in class Query
        Returns:
        true if a removal was made, false otherwise.
      • isEmptyQuery

        public boolean isEmptyQuery()
        Specified by:
        isEmptyQuery in class Query
        Returns:
        true if this query is now essentially "empty" (doesn't affect query logic at all) and can now be removed from the query tree. This can happen, for example, if all child queries were removed and the query logic depends on having at least one child query.