Escapar de consultas de búsqueda para el servicio de búsqueda de texto completo de Google

Esta es una publicación cruzada dehttps://groups.google.com/d/topic/google-appengine/97LY3Yfd_14/discussion

Estoy trabajando con el nuevo servicio de búsqueda de texto completo en gae 1.6.6 y tengo problemas para descubrir cómo escapar de las cadenas de búsqueda antes de pasarlas al índice de búsqueda. Los documentos mencionan que ciertos caracteres deben ser escapados (a saber, eloperadores numéricos), sin embargo no especificancómo el analizador de consultas espera que la cadena se escape.

El problema que tengo es doble:

Si no logra escapar de la mierda de muchos caracteres (más de los que se indican en los documentos), el analizador generará unaQueryException.Cuando he escapado de la consulta al punto en que no subirá, los operadores numéricos (>, <,> =, <=) ya no se analizarán correctamente (no se incluyen en la búsqueda).

Preparo una prueba donde me alimentostring.printable dentromy_index.search() y encontré que subiríaQueryException en cada uno de los caracteres de control "imprimibles", que ahora estoy eliminando, así como cosas que parecen inocentes como asterisco, coma, paréntesis, tirantes, tilde. Ninguno de estos se menciona en los documentos como necesidad de ser escapado.

Hasta ahora he intentado:

cgi.escape()saxutils.escape() con un mapeo de ascii a equivalentes urlencoded (por ejemplo,, ->%2C)saxutils.escape() con un mapeo de ascii a códigos html codificados por ascii (por ejemplo,&#123;)urllib.quote_plus()

He obtenido los mejores resultados hasta ahora usando url-style (%NN) reemplazos, pero>, <,> =, y <= continúan fallando en producir los resultados esperados del índice. Además, y esto realmente no parece tener nada que ver con el problema de escape, pero usandoNOT Delante de unfield = value El tipo de consulta parece no estar funcionando como se anuncia.

tl; dr

¿Cómo debo estar escapando de mis consultas antes de enviarlas al servicio de búsqueda para que el analizador no se active?QueryException y mi consulta produce resultados esperados?

Respuestas a la pregunta(1)

Su respuesta a la pregunta