miércoles, noviembre 26, 2008

Sobre Search Engines


Estoy un poco frustrado...
Que poca documentación hay sobre search-engines en general....
Es un campo como con un poco de oscurantismo.
Si ni siquiera la wikipedia tiene tablas comparativas de productos... hay que ver.
Si siquiera los listados estan completos.

La verdad... hacer cualquier cosa en este campo... lleva un coste de entrada alto... Precisamente por esta falta de documentación en general.

Mi experiencia hasta ahora sólo ha sido con Fast Data Search, y es mi referencia. Por lo que he visto, lo único realmente que se le aproxima sería Nutch. Por lo que así a bote pronto, si la tecnología y/o el lenguaje no es importante creo que la elección actual para montar algo debería ser Nutch.

Nutch viene con todo lo necesario: indexador, buscador y crawler. Pero ademas, permite ampliar el core, mediante pluggings. Algo fundamental...
Y algún producto adicional alrededor, como Solr.
Por todo ello es el candidato número uno a considerar.

El problema es si queremos usarlo desde python, ya que si que tenemos pylucene, pero no pyNutch.

Como alternativa a indexar/buscar de lucene tenemos xapian. Puede que tengamos claro que queremos xapian [un articulo] en lugar de lucene, por alguna característica diferenciadora del primero (de nuevo hecho en falta una tabla comparativa).
Si queremos montarnos un framework en python, con xapian puede que lo tengamos más fácil, pero será mucho mas curro que con Java.

Tenemos dos alternativas... sumarnos a la corriente y tirar por nutch, o montar una alternativa con python.
Incluso si tomamos la opción de la alternativa, todavía nos quedaría la decisión de decidir que indexador usar (pylucene o xapian) y que crawler.

A la hora de decidir que indexador usar ahí van unos enlaces (hay muy poca información de comparativas):

¿Y nadie se ha planteado esto antes? Pues claro que si. De hecho ahí comentar un par de productos Lupy (ya extinto) y nucular.

Ya para acabar...
Meter unas notas sobre que mas cosas hay por ahí y que no considero.
En primer lugar referenciar la cutre pagina de la wikipedia, y otra mucho mejor.
Y unas cuantas search engines adicionales:
  • sphinx: (C++) Es un producto activo. He leido que tinene bindings para python. No he visto que tenga crawler. Tiene pluggins para conectarse a diversas BDs, como MySQL. De hecho parece que es el uso que se le está dando principalmente, a buscar en BDs.
  • YaCy: tiene un crawler, pero es como un sistema totalmente distribuido. Debe ser una cosa rara.. no he produndizado mas. (C)
  • swish-e: No he leido nada en contra del producto. Por lo visto es muy sencillo. Tiene un crawler en perl, que genera datos en formato específico apra swish (C/perl). El crawler no tiene mala pinta... Hasta soporta callbacks. Hay una versión para C++. Refs: [1]. La versión actual tiene un problema gordo, no soporta unicode. Y la indexación no es incremental.
  • Terrier: Incluye crawler (Java)
  • egothor: Incluye crawler (Java)
  • Zebra: Viendo el site, se puede apreciar que es un producto de calidad. Muy bien documentado. Parece que su punto diferenciador es que soporta el interfaz Z39.50. No tiene crawler. Creo que sólo soporta texto y XML. (C)
  • zettair: No he visto que tenga crawler. (C)

1 comentario:

cesarob dijo...

El crawler de Egothor no parece estar disponible.