Skip to content

Fuzzy Search for ENS Names

Fetch Domains with names similar to a query string, ranked by similarity. This example uses PostgreSQL’s pg_trgm extension, which provides the % operator for fuzzy matching and the similarity() function for ranking results. See Connect for setup.

SQL
SELECT
type,
canonical_name,
canonical_node,
owner_id,
similarity(canonical_name, 'vitalik') as name_similarity,
id
FROM "ensindexer_0".domains
-- Use the pg_trgm similarity operator (%) for fuzzy matching on canonical_name
WHERE canonical_name % 'vitalik'
AND canonical = true
ORDER BY name_similarity DESC
LIMIT 5;
Output
# idtypecanonical_namecanonical_nodeowner_idname_similarity
1
11155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0xee6c4522aab0003e8d14cd40a6af439055fd2577951148c14b6cea9a53475835
ENSv1Domain vitalik.eth 0xee6c4522aab0003e8d14cd40a6af439055fd2577951148c14b6cea9a53475835 0xd8da6bf26964af9d7eed9e03e53415d37aa96045 0.6666667
2
11155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0x278adcf079fceb551531f1593deae8891d83bf4708b935d54eda7f8db51ce797
ENSv1Domain vitalikkk.eth 0x278adcf079fceb551531f1593deae8891d83bf4708b935d54eda7f8db51ce797 0x588f6b3169f60176c1143f8bab47bcf3deebecdc 0.46666667
3
11155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0x55e83f7d37d7cf1f87c40a6bd5fc8e62e8898b327c5a09776596f6efe547349a
ENSv1Domain vitalik.taars.eth 0x55e83f7d37d7cf1f87c40a6bd5fc8e62e8898b327c5a09776596f6efe547349a 0x5a09e3ec3efdd91205cbb097142a4f4dcefc7f02 0.44444445
4
84532-0x1493b2567056c2181630115660963e13a8e32735-0x97fa42e69feb1d407361108d79ddad705707a16392d7823f8b21b44dabfc4a9d
ENSv1Domain vitalik.basetest.eth 0x97fa42e69feb1d407361108d79ddad705707a16392d7823f8b21b44dabfc4a9d 0x15378e401f9c3243639c7c3250be0f396a758e40 0.3809524
5
11155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0x117e485acf1ebff586d1382b7689201ce23f7142ae92f4c397849f4b01e6a1cc
ENSv1Domain vitalikbuterin.eth 0x117e485acf1ebff586d1382b7689201ce23f7142ae92f4c397849f4b01e6a1cc 0x16ecc228f185b084cb884be2d65544f5ca4dd761 0.35

Output matches a result snapshot; live output depends on your ENSNode instance.