2011-07-24 10 views
2

Je travaille sur une application web pyramidale qui utilise SQLAlchemy.
J'ai une base de données de 7000 universités américaines, et une zone de saisie en entrée pour entrer une université. La boîte de saisie utilise la saisie semi-automatique de jQuery UI, qui appelle ensuite mon application pyramidale avec AJAX pour obtenir une liste d'options.
La façon dont je suis aller chercher les résultats en fonction du terme sont les suivants: session.query(University).filter(University.name.like('%' + term + '%')
Cependant, cela fonctionne assez décemment, je voudrais soutenir les éléments suivants - lorsqu'un utilisateur entre UCLA, je voudrais trouver University of California - Los Angeles. Pour FSU - Florida Status University, et ainsi de suite.
En plus d'itérer toute ma liste d'universités (~ 8000) et de décider manuellement si le nom correspond, existe-t-il un moyen de spécifier une fonction de correspondance à la requête/au filtre de sqlalchemy?Algorithmes de recherche SQLAlchemy

Merci! SQLAlchemy est essentiellement un frontal à SQL.

Répondre

1

Si votre requête ne peut pas être facilement exprimée en SQL, il est peu probable que vous voyiez un avantage à essayer de la faire tourner dans cette direction par rapport à une simple itération manuelle - elle doit tout de même retirer une ligne entière et comparer il, que vous le fassiez ou qu'il le fasse.

Toutefois, si vous recherchez X, vous souhaitez également rechercher un Y qui peut être dérivé de X, rechercher d'abord le Y, puis interroger les deux en utilisant le OR operator.

ie. Ne pas faire:

get all rows, and for each row, see if it matches X or Y

à la place faire:

get all rows that match X plus all rows that match Y.

Questions connexes