Pregunta

Estoy empezando con Python en Google App Engine creando una base de datos de contactos. ¿Cuál es la mejor manera de implementar la búsqueda con comodines?

Por ejemplo, ¿puedo hacer una consulta ('name =',% ewman%)?

¿Fue útil?

Solución

Desafortunadamente, el motor de aplicaciones de Google no puede hacer coincidencias parciales de texto

De los documentos:

  

Sugerencia: los filtros de consulta no tienen una forma explícita de hacer coincidir solo parte de un valor de cadena, pero puede simular una coincidencia de prefijo utilizando filtros de desigualdad:

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

Esto hace coincidir cada entidad MyModel con una propiedad de cadena que comienza con los caracteres abc. La cadena unicode u " \ ufffd " representa el carácter Unicode más grande posible. Cuando los valores de propiedad se ordenan en un índice, los valores que se encuentran en este rango son todos los valores que comienzan con el prefijo dado.

Otros consejos

App Engine no puede hacer consultas 'me gusta' porque no puede hacerlas de manera eficiente. Sin embargo, su base de datos SQL tampoco puede: A 'foo LIKE "% bar% "' la consulta solo se puede ejecutar haciendo un análisis secuencial de toda la tabla.

Lo que necesita es un índice invertido. La búsqueda básica de texto completo está disponible en App Engine con SearchableModel . Bill Katz ha escrito una versión mejorada aquí , y hay una solución comercial para App Engine (con una versión gratuita) disponible aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top