6 votos

Búsquedas de texto completo de GIN / GiST a través de openlayers, geoserver y postgres

Tengo una aplicación web que asigna automáticamente los últimos tweets y permite la búsqueda para determinadas palabras clave. utiliza Postgres para la base de datos, geoserver como el servidor, y openlayers como el cartográfica de la biblioteca. Ahora mismo tweet palabras clave se realiza mediante el ILIKE consulta.

Esto funciona muy bien si la palabra que estoy buscando es una palabra comúnmente usada, como 'amor' , 'amigo', 'OMG', etc. pero menos palabras comunes como "geoespacial" la necesidad de buscar a través de muchos más datos con el fin de encontrar el último n de las instancias de la palabra. Este es muerta.

Para combatir mi lentitud estoy construyendo un GIN índice en mi tweet de campo en postgres. Dos días más tarde y todavía estoy esperando que el índice completo. Una vez construido sin embargo, voy a probar un par de consultas con SQL parámetros de vista y espero que esto se drásticamente la velocidad de las cosas.

Incluso si este enfoque funciona, sin embargo, no va a ser del todo útil si el índice toma tanto tiempo para crear -- el mantenimiento de la misma no será capaz de mantenerse al día en los entrantes de la inundación de datos. Creo que voy a probar la Esencia de índice siguiente y ver cuánto tiempo se tarda como entiendo que es mucho más rápido para construir este índice.

Más allá de esto, ¿qué puedo hacer? Hacer opciones como Solr trabajo con Geoserver?? Hay enfoques comunes para este tipo de problema y el tamaño de los datos/de la tasa?

4voto

ecolell Puntos 1

Parece que podrías hacerlo con Solr. Sin embargo, usaría ElasticSearch porque es más fácil comenzar. Ya que estás trabajando con puntos, parece un buen ajuste.

Lo utilizaría de forma independiente como fuente de datos para Openlayers, no actúa como una "tienda" para geoserver.

3voto

Elliott Maynard Puntos 11

También puede intentar la Búsqueda de Texto Completo PostgreSQL capacidades y que todavía coinciden con su arquitectura (OL, GeoServer y PostgreSQL).

Aquí tienes un muy buen recurso en PostgreSQL FTS: http://blog.lostpropertyhq.com/postgres-full-text-search-is-good-enough/ De acuerdo a ello, se debe construir una Esencia (y no un GIN) índice debido a que funciona mejor con datos dinámicos.

Por el camino, evitar COMO/ILIKE consultas si quieres buen rendimiento de la búsqueda, que son uno de los SQL Anti-patrones! Ver p.135: http://www.scribd.com/doc/2670985/SQL-Antipatterns Mejor uso de PostgreSQL FTS!

0voto

Subimage Puntos 1492

Usted podría utilizar GeoAlchemy + Búsqueda de Texto Completo (FTS). Es, probablemente, puede aumentar la velocidad de las consultas. Sin embargo, parece que FTS necesita ser adaptada a hacer este tipo de trabajo en GA. Pongo a continuación algunos enlaces que te pueden dar algo más de conocimientos en ambas herramientas:

GeoAlchemy:

  1. http://frankpurcell.com/code/tutorial
  2. http://www.geoalchemy.org/_sources/tutorial.txt
  3. https://github.com/geoalchemy/geoalchemy/tree/master/examples
  4. https://geoalchemy-2.readthedocs.org/en/latest/orm_tutorial.html

FTS (con SqlAlchemy, pero ya está adaptado a la SA como un parche):

  1. http://nibrahim.net.in/2013/11/29/sqlalchemy_and_full_text_searching_in_postgresql.html

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X