full-text-search - tutorial - sites google nuevo



La búsqueda de texto completo de la API de Google Sites no funciona para idiomas no occidentales (1)

En mi aplicación JavaEE, estoy usando la API de Google Sites basada en Atom para recuperar contenido de un sitio de Google no público. En esencia, estamos usando el sitio de Google como un CMS liviano, y desde la aplicación uso la API para recuperar el contenido del sitio para alimentar mi sistema de ayuda en línea. He tenido esta configuración por un tiempo y está funcionando sin problemas.

La cuestión

En mi aplicación, necesito agregar funcionalidad de búsqueda de texto completo al sistema de ayuda en línea. Sabía que esta solicitud de función llegaría en algún momento, así que al decidir sobre Google Sites para alojar mi contenido, verifiqué si la API de sitios admite la búsqueda de texto completo. Lo hace . Por ejemplo, la siguiente URL buscará en todo el sitio my-site busca de páginas que contengan la palabra clave user .

https://sites.google.com/feeds/content/my.doma.in/my-site?q=user

Esto funciona y me da las páginas de resultados esperados. Pero lo hace solo para el contenido escrito en idiomas occidentales , o, más específicamente, idiomas en los que las fichas / palabras están separadas por espacios en blanco y puntuación. Cuando ejecuto una búsqueda similar en mi contenido japonés, buscando la palabra clave ユーザー :

https://sites.google.com/feeds/content/my.doma.in/my-site?q=%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC

Solo obtendré páginas de resultados en las que el término de búsqueda aparece como una cadena desnuda, es decir, delimitado por espacios en blanco o puntuación. Como el japonés es un idioma escrito en scriptio continuo , esto no es suficiente. Páginas que contienen, por ejemplo:

ご 自身 の ユ ー ザ ー 基本 情報 の 確認

no aparecerá en los resultados. Por lo tanto, parece que el índice de búsqueda que se utiliza detrás de escena se crea en base a reglas léxicas "occidentales", y que el contenido japonés no está correctamente tokenizado. Sin embargo, cuando busco la misma palabra clave en el campo Buscar en este sitio del sitio de Google, obtengo los resultados correctos. Concluyo que existe un índice correctamente tokenizado, pero parece ser imposible usarlo para una búsqueda basada en API .

Lo que he probado hasta ahora

Para remediar esta situación, estas son las vías que he explorado hasta ahora:

  • Intenté buscar la configuración de idioma en los sitios de Google. Hay una configuración general de idioma de la interfaz de usuario que ya estaba configurada en japonés y no tiene ningún impacto en los resultados de la consulta API. No hay configuraciones de idioma por página o por plantilla para forzar la mano del indexador / tokenizador.
  • He intentado citar la cadena de búsqueda con comillas dobles ( "ユーザー" ).
  • He intentado incluir comodines ( *ユーザー* ).
  • Intenté usar parámetros de idioma adicionales para la URL que son comunes en otras API de Google: lang , hl (idioma de la interfaz), rl (idioma de resultados), ..
  • He intentado crear un motor de búsqueda personalizado de Google, pero parece imposible que funcione en un sitio de Google no público.

Entonces...

Me estoy quedando rápidamente sin ideas aquí. En el peor de los casos, terminaré teniendo que recuperar, tokenizar e indexar todo el contenido yo mismo y hacer que se pueda buscar de esa manera. Dado que esto requerirá un esfuerzo sustancial, me gustaría saber si alguien ha encontrado el mismo problema y ha encontrado una solución o solución aceptable.

Actualización 1

Todavía no he encontrado una solución elegante para este problema, así que planteé un defecto en el rastreador de problemas de las API de Google Apps: https://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=3780

Actualización 2

Después de un poco de ir y venir, los ingenieros de Google han reconocido que el problema realmente existe como se describe, y han "archivado el problema internamente" . El ticket del defecto se ha atascado en estado de prueba desde entonces. Si a usted, como yo, le interesa ver resuelto este problema, tómese un momento para marcar / votar en https://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=3780 .


Sé cómo se siente cuando se espera que el soporte de alguien maneje un error de API mientras su aplicación no cumple con los plazos definidos. El problema que describió realmente suena como un error, por lo que para una solución "limpia" tendrá que esperar hasta que el equipo de Google Sites resuelva este error (ya lo voté :)) y podrá simplemente usar la API de búsqueda.

Sin embargo, mientras tanto, creo que deberías probar algunas soluciones. Puedo sugerirle una solución diferente que no satisfará sus necesidades al 100%, pero puede ser útil. Por ejemplo, configure su sitio para exponer el feed de datos de agregación al procesador de feeds con una rica API de búsqueda: puede ser un feed RSS con todos los artículos de su sitio de Google Feedly por Feedly que tienen un buen soporte de API de búsqueda en varios idiomas ( Buscar el contenido de una secuencia ) junto con una autenticación fuerte para proteger la privacidad de sus datos.

Como arquitecto, sé que esta no es una solución adecuada para el problema, pero una vez que me ayudó a construir una aplicación con capacidad de búsqueda completa que agregue datos de más de 100 fuentes de datos diferentes utilizando entornos rusos y ucranianos.

¡Buena suerte en el desarrollo de su aplicación y avíseme si esta solución lo ayudó! :)