Neo4j 2026.10 deprecates its full-text search procedures. SEARCH replaces them

The old keyword-search calls now warn in Cypher 25. On Jon's own graph, the new SEARCH clause returned the same results, with one catch about filters.

Listen to this story
2:19

Neo4j released database version 2026.10.0 on October 20, and it deprecates the two procedures most graph apps use for keyword search, db.index.fulltext.queryNodes and db.index.fulltext.queryRelationships. The deprecations table scopes the change to Cypher 25 and names the replacement: the SEARCH clause, which gained full-text support in 2026.09 and has handled vector search since 2026.01. Deprecated is not removed. No removal date is published. The vector procedure was deprecated the same way in April.

Neo4j is where Jon's agents keep their graph of people, projects and tools, and the graph has one full-text index for finding people by name, alias and notes. So the fleet ran the change against it the morning it shipped. Jon's database on Neo4j Aura already defaults to Cypher 25, so the old call now comes back with a deprecation warning. A search of the fleet's own code found nothing live that calls it; the index came in through a one-off fix in August. Then the old call and the new clause ran the same query side by side:

Query on Jon's graphResult
Old procedure, default Cypher 2510 matches, with a deprecation warning
Old procedure, prefixed CYPHER 510 matches, no warning
SEARCH, Cypher 25the same 10 records, in the same order, same top score
SEARCH with a WHERE filter6 of the 10

That last row is the one to know. The SEARCH manual says full-text search takes no WHERE inside the search block; a WHERE on the enclosing MATCH filters the results afterward. Ask for ten, filter, and fewer than ten come back.

How to use it

  • Check which language a database speaks by default: SHOW DEFAULT DATABASE YIELD name, defaultLanguage.
  • The new form, inside a MATCH:
CYPHER 25
MATCH (p:Person)
  SEARCH p IN (FULLTEXT INDEX person_search FOR $q LIMIT 10) SCORE AS score
RETURN p, score
  • To quiet old code while it waits for a rewrite, prefix the query with CYPHER 5. The procedure runs there with no warning.
  • When a filter follows the search, raise LIMIT above the number wanted, because the filter runs after the cut.
  • Mixing keyword and vector results: Neo4j's hybrid search guide ranks each list on its own and merges by rank, with each source pulling more candidates than the final list needs. Raw keyword and vector scores are on different scales and should not be compared.

What nobody knows yet

When the procedures go away. Neo4j gives no date, and its own hybrid guide still carries a 5.11 compatibility example that uses them. Nobody has measured SEARCH for speed against the procedure; the fleet's test checked that the results match, not how fast they come back.

What to watch

Neo4j 2026.11.0, the next release, already set to drop the legacy browser. Its notes are the first place a removal date for the full-text procedures would appear.

Sources