Busqueda en texto

Alvaro Herrera alvherre en dcc.uchile.cl
Mie Nov 3 11:24:37 CLST 2004


On Tue, Nov 02, 2004 at 11:08:45PM -0300, Alejandro Barros wrote:

Alejandro,

> Estoy buscando alguna herramienta para indexar (keywords) un archivo de texto
> (cada registro tiene dos campos número de registro y texto) y luego realizar
> búsquedas eficientes en el, alguna recomendación?

Hay miles.  Una primera idea seria usar tecnicas de fuerza bruta como
grep, o agrep + glimpse.  Esto es mucho mas eficiente de lo que uno
cree.  A menos que tengas muchos MBs de datos, te lo recomiendo por lo
barato.

Si realmente quieres un indice (cosa que tendrias que evaluar antes de
perder el tiempo haciendo), tienes las sugerencias de Cristian
Gutierrez.  Si usas algun software con interfaz SQL puedes levantar tu
indice rapidamente (creas una tabla, importas los datos, creas los
indices, listo; tiempo total, cinco minutos).

Si quieres algo ad-hoc, puede hacerse con bastante sencillez usando
BerkeleyDB, o mira perltie(3)

Finalmente dejame indicar que en realidad necesitas definir de antemano
que clase de busquedas quieres realizar.  

1 Busquedas aproximadas
2 Busquedas por prefijos
3 Busquedas por substrings arbitrarios
4 Busquedas exactas

Para 1 necesitas algo que haga busquedas "con errores", como agrep o
nrgrep (este ultimo es muy cool IMHO).

Para 2 puedes usar la BD SQL, o BerkeleyDB o perltie.

Para 3 necesitas algo mas elaborado como un indice por trigramas, o una
representacion de sufijos.  O bien usa grep.

Para 4 te sirve cualquier cosa.

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"La rebeldía es la virtud original del hombre" (Arthur Schopenhauer)



Más información sobre la lista de distribución Linux