I have the following Cypher query:
MATCH (n)-[r]->(k)
WHERE ANY(x in keys(n)
WHERE round(apoc.text.levenshteinSimilarity(
TRIM(
REDUCE(mergedString = "", item in n[x]
| mergedString + item + " ")), "syn"), 4)
> 0.8)
RETURN n, r, k
How can I return the score generated inside the WHERE clause by the similarity function.
I am trying to do this with WITH, without luck:
MATCH (n)-[r]->(k)
WITH *, [x in keys(n) | [x, round(apoc.text. levenshteinSimilarity(TRIM(REDUCE(mergedString = '', item in n[x] | mergedString + item + ' ')), 'syn'), 4)]] as scores
WHERE [s in scores WHERE s[1] >= 0.8]
RETURN n,r,k,[s in scores WHERE s[1] >= 0.8] AS attr_scores
To return only relevant attributes with a score > 0.8, update your list comprehension to this:
Finally together with Charchit Kapoor we've found out the best solution: