## 12.11. Parallel Node Search

This section describes procedures that can be used to find nodes in parallel.

Utility to find nodes in parallel (if possible). These procedures return a single list of nodes or a list of 'reduced' records with node id, labels, and the properties where the search was executed upon.

`call apoc.search.node(labelPropertyMap, searchType, search ) yield node` | A distinct set of Nodes will be returned.
`call apoc.search.nodeAll(labelPropertyMap, searchType, search ) yield node` | All the found Nodes will be returned.
`call apoc.search.nodeReduced(labelPropertyMap, searchType, search ) yield id, labels, values` | A merged set of 'minimal' Node information will be returned. One record per node (-id).
`call apoc.search.nodeAllReduced(labelPropertyMap, searchType, search ) yield id, labels, values` | All the found 'minimal' Node information will be returned. One record per label and property.

These procedures are passed the following parameters:

`labelPropertyMap` | `'{ label1 : "propertyOne", label2 :["propOne","propTwo"] }'` | (JSON or Map) For every Label-Property combination a search will be executed in parallel (if possible): Label1.propertyOne, label2.propOne and label2.propTwo.
`searchType` | 'exact' or 'contains' or 'starts with' or 'ends with' | Case insensitive string search operators
`searchType` | "<", ">", "=", "<>", "⇐", ">=", "=~" | Operators
`search` | 'Keanu' | The actual search term (string, number, etc).

example.

    CALL apoc.search.nodeAll('{Person: "name",Movie: ["title","tagline"]}','contains','her') YIELD node AS n RETURN n
    call apoc.search.nodeReduced({Person: 'born', Movie: ['released']},'>',2000) yield id, labels, properties RETURN *