Search

Query, search, and filter your graph data with powerful engines.

Querying and Search

Three built-in engines for exploring your graph.

QueryEngine

Graph traversal and structural queries.

import { useInferaGraph } from '@inferagraph/react';

function PatriarchExplorer() {
  const { queryEngine } = useInferaGraph();

  const neighbors = queryEngine.getNeighbors('abraham', 2);
  const path = queryEngine.findPath('abraham', 'canaan');
  const sub = queryEngine.getSubgraph(['abraham', 'isaac', 'jacob']);

  return (
    <div>
      <h2>Abraham's Neighbors</h2>
      {neighbors.map(n => <li key={n.id}>{n.id}</li>)}
    </div>
  );
}

SearchEngine

Full-text search with relevance scoring.

import { useInferaGraph } from '@inferagraph/react';
import { useState } from 'react';

function BibleSearch() {
  const { searchEngine } = useInferaGraph();
  const [query, setQuery] = useState('');

  const results = searchEngine.search(query);

  return (
    <div>
      <input value={query} onChange={e => setQuery(e.target.value)} />
      {results.map(r => <li key={r.nodeId}>{r.nodeId} ({r.score})</li>)}
    </div>
  );
}

FilterEngine

Predicate-based node filtering.

import { useInferaGraph } from '@inferagraph/react';

function PatriarchFilter() {
  const { filterEngine } = useInferaGraph();

  // Find all people from the Patriarchs era
  const patriarchs = filterEngine.filter(
    (attrs) => attrs.type === 'person' && attrs.era === 'Patriarchs'
  );

  return (
    <ul>
      {patriarchs.map(p => <li key={p.id}>{p.id}</li>)}
    </ul>
  );
}