Dans la requête SQL donnée en exemple, je ne sélectionne que le champ "name", rien ne t'empêches cependant de faire une sélection plus large, remontant plus de champs, ou même de faire une jointure pour faire une recherche sur plusieurs tables. Par exemple avec un node de type "ville" et une table associée "extension" qui contient l'information de pays, cela donnerait :
$cursor= db_query_range("
SELECT n.title, e.pays
FROM node n
INNER JOIN e extention ON e.nid=n.nid
WHERE LOWER(e.title) LIKE LOWER('%s%%')",$string,0,10); while($term= db_fetch_object($cursor)) $matches[$term->name]=$term->title.' '.$term->pays;
Et ce type de requête, pourvu que tu ais des indexes, ne pose pas de problème même sur un grand nombre de node, le paramètre (10) fait que tu ne remontes que 10 entrées (en fait Drupal modifie la requête pour ajouter un simple LIMIT 10 à la fin). Pas besoin donc de préselectionner quoi que ce soit, si j'ai bien compris ta question.
Dans la requête SQL donnée en exemple, je ne sélectionne que le champ "name", rien ne t'empêches cependant de faire une sélection plus large, remontant plus de champs, ou même de faire une jointure pour faire une recherche sur plusieurs tables. Par exemple avec un node de type "ville" et une table associée "extension" qui contient l'information de pays, cela donnerait :
SELECT n.title, e.pays
FROM node n
INNER JOIN e extention ON e.nid=n.nid
WHERE LOWER(e.title) LIKE LOWER('%s%%')", $string, 0, 10);
while ($term = db_fetch_object($cursor))
$matches[$term->name] = $term->title.' '.$term->pays;
Et ce type de requête, pourvu que tu ais des indexes, ne pose pas de problème même sur un grand nombre de node, le paramètre (10) fait que tu ne remontes que 10 entrées (en fait Drupal modifie la requête pour ajouter un simple LIMIT 10 à la fin). Pas besoin donc de préselectionner quoi que ce soit, si j'ai bien compris ta question.