Función para analizar dirección y plpython (era Re: OT consulta de string)

From: "Mariano Reingart" <mariano(at)nsis(dot)com(dot)ar>
To: "Jose Vasquez" <cibercol(at)gmail(dot)com>
Cc: "Cesar Erices" <caerices(at)gmail(dot)com>, "Ayuda" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Función para analizar dirección y plpython (era Re: OT consulta de string)
Date: 2009-06-04 05:12:47
Message-ID: 1309.190.50.152.77.1244092367.squirrel@www.nsis.com.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Jose:

> Mariano lei tu programa,
>
> http://www.arpug.com.ar/trac/browser/911/modelo/Direccion.php
>
> El problema es que cuando se tiene que ejecutar sobre 500.000 registros
> tomaría unas 8 horas.

Me entro la duda por estas 8 horas que mencionas, asique traduje el
ejemplo en php a uno en PlPython, y probandolo con una base de datos real
sobre 500.000 registros tardó menos de 2 minutos en analizarlos en total:

select analizar(lugar) from novedades limit 500000
Total query runtime: 94188 ms.
500000 rows retrieved.

select (d.dir).calle1, (d.dir).calle2, (d.dir).altura from (select
analizar_dir(lugar) as dir from novedades limit 500000) d
Total query runtime: 103844 ms.
500000 rows retrieved.

El código lo subí al arpug:
http://www.arpug.com.ar/trac/wiki/PlPython#Analizadordedirecciones

No se porque podría tardar tanto como comentas, ni que hace tu función,
por lo menos en plpython para esta función el tiempo de ejecución no es un
problema.

(aclaro que la maquina con la que lo probe no es nada de otro mundo, es
una simple eeepc con un procesador atom y 1gb de ram en windows, y el
código tampoco esta optimizado)

> En nuestra empresa tenemos un procedimiento almacenado en plpgsql que mas
> o
> menos se trata de guardar en una tabla las posibles formas de decir calle
> u
> otras denominaciones para una dimension, la idea es que una direccion
> puede
> tener n dimensiones y cuando coincidan todas, pues esta es la zona.

La verdad que no entiendo, el código que programe es para un caso puntual
(donde comunican la dirección de un accidente/crimen/etc. por teléfono),
puede ser imprecisa (mal escrita) y hasta no corresponder con una casa u
edificio.
Quizas es mas simple si es una dirección postal existente (que siempre
comienza con el nombre de calle bien escrito, altura, etc.). En ese caso
seguramente ya tendría que estar normalizada (calle por un lado, altura
por otro, etc.).

> Para tu caso Calle Marin Pardo pertenece a una subzona que tiene ciertos
> limites o que esta compuesta por ciertas calles.
>
> De esta forma se puede realizar la zonificación de 500.000 direcciones en
> unos segundos.
>
> La dificultad es que lo hicimos para Colombia y pues aqui la nomenclatura
> es
> diferente.
>
> Habria que adecuarlo a la nomenclatura Argentina, si tu me explicas como
> es
> la nomenclatura Argentina.

Principalmente la nomenclatura argentina es:
* "Calle principal" Nº "altura"

También se acepta (cuando se necesita más detalle):
* "Calle principal" [Nº "altura"] entre "Calle transversal 1" y "calle
transversal 1"
* "Calle principal" esquina "Calle transversal"
etc.

Igualmente yo no lo necesito, le contestaba una consulta a Cesar Erices,
no se de que pais será el, pero si quieren lo podemos analizar.

Sds
Mariano

> Saludos.
>
> José VASQUEZ
>
> 2009/6/3 Mariano Reingart <mariano(at)nsis(dot)com(dot)ar>
>
>> Cesar:
>>
>> > Estimados, muy buenos dias, necesito saber si alguien le a tocado
>> realizar
>> > lo siguiente:
>> >
>> > en un campo estrin tengo una direccion, eje CALLE MARIN PARDO 2050
>> DPTO 5
>> >
>> > de dicho texto necesito rescatar lo siguiente
>> >
>> > tipo de calle = va estar codificado 01 (CALLE)
>> >
>> > direccion = MARIN PARDO
>> >
>> > numero = 2050
>> >
>> > otros = DPTO 5
>> >
>> > todo esto a traves de un script,
>> >
>> > si alguien tiene esto por favor agradeciria algun comentario, desde ya
>> > muchas gracias
>>
>> Para un sistema 911 hice una subrutina de análisis básico de
>> direcciones,
>> que desglosaría un string en calle1+numero+calle2, no tendria que seri
>> dificil detectar el tipo de calle o los otros datos adicionales (dpto)
>>
>> Podes encontrarla en la página del ArPUG:
>>
>> http://www.arpug.com.ar/trac/browser/911/modelo/Direccion.php
>>
>> Espero que te sirva,
>>
>> Sds
>> Mariano
>>
>>
>> --
>> TIP 5: ¿Has leído nuestro extenso FAQ?
>> http://www.postgresql.org/docs/faqs.FAQ.html
>>
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Dilm E.I.R.L 2009-06-04 05:53:28 Problemas con PGAdmin
Previous Message Espartano 2009-06-04 03:43:11 Re: En un mismo Pc, servidor y cliente?