title: Neo4j Fast way to match fuzzy text property
body: <p>I have a reasonable number of nodes (roughly 60,000)</p>
  
  <pre><code>(:Document {title:"A title"})
  </code></pre>
  
  <p>Given a title, I want to find the matching node, if it exists. The problem is that the title I'm given is not consistent. That is, sometimes the beginning of a new word is Capital, sometimes it is all lower case. Sometimes Key-Words are combined with Kebab case, sometimes they are written normally as key words.</p>
  
  <p>To compensate for that I use apoc and the Levenshtein distance between the given title and every node and only accept a node as a match if it is below some threshold:</p>
  
  <pre><code>MATCH (a:Document)
  WHERE apoc.text.distance(a.title, "A title") &lt; 10
  RETURN a
  </code></pre>
  
  <p>This <em>does not scale well</em>. Currently a single lookup takes about <strong>700 ms</strong> which is too slow, given that this will likely grow to somewhere around 150,000 nodes.</p>
  
  <p>I was thinking of storing / caching the occurrence of alternative titles in an <code>alias:[...]</code> property of the node and build an index over all aliases, but I don't know if this is possible in Neo4j.</p>
  
  <p>What is the fastest way to "fuzzy find" a title given a large database of nodes?</p>