Frage

Ich bin gerade erst mit Python auf Google App Engine eine Kontaktdatenbank aufzubauen. Was ist der beste Weg, Wildcard-Suche zu implementieren?

Zum Beispiel kann ich query ( 'name =',% ewman%)?

War es hilfreich?

Lösung

Leider Motor Google App kann teilweise Text-Matches tun

Aus der Dokumentation:

  

Tipp: Abfragefilter haben keine explizite Weise nur ein Teil eines String-Wert übereinstimmen, aber Sie können fälschen Prefix-Übereinstimmung mit Ungleichheitsfilter:

db.GqlQuery("SELECT * FROM MyModel WHERE prop >= :1 AND prop < :2", "abc", u"abc" + u"\ufffd")
  

Dies entspricht jede MyModel Entität mit einer String-Eigenschaft prop, die mit dem Zeichen abc beginnt. Die Unicode-String u "\ uFFFD" stellt die größtmögliche Unicode-Zeichen. Wenn die Eigenschaftswerte in einem Index sortiert werden, die Werte, die in diesen Bereich fallen alle Werte, die mit dem angegebenen Präfix beginnen.

Andere Tipps

App Engine kann nicht tun, ‚wie‘ Anfragen, weil es nicht effizient tun können. Auch kann die SQL-Datenbank, wenn: a. ‚Foo LIKE‚% bar%‘‘ Abfrage kann nur, indem Sie einen sequentiellen Scan über die gesamte Tabelle ausgeführt werden

Was Sie brauchen, ist ein umgekehrtes Index. Grundvolltextsuche ist in App Engine verfügbar mit SearchableModel . Bill Katz geschrieben hat eine erweiterte Version hier , und es gibt eine kommerzielle Lösung für App Engine (mit einer kostenlosen Version) verfügbar hier rel="nofollow .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top