NEO4j Optimize match and merge based on fuzzy match

Hi, I am running the following query

MATCH (fn1: full_name)
MATCH (fn2: full_name)
WHERE fn1.full_name <> fn2.full_name and  apoc.text.fuzzyMatch(fn1.full_name, fn2.full_name)=TRUE
MERGE (fn1)-[:FUZZY_MATCH]-(fn2)

which is currently taking more than an hour to run. The graph consists of approximately 54K full_name nodes. The idea is to create a connection between similar names.
Is there a way for me to optimize this process?

(Screenshot of query map for reference)

Hi, have you set indexes already?

https://neo4j.com/docs/cypher-manual/current/administration/indexes-for-search-performance/

Even index creation is taking time but I'm currently creating indexes for full_name nodes. Will update on performance once it gets done.

Also, you can check the constraint creation. I believe this can speed up even more (but at the cost of having an exclusive field)

Is there anything I'm missing out on in terms of query tuning? I was hoping that might be an area to explore as well.