Toda aplicación Web que se precie debe tener un buscador. Pero un buscador en condiciones.
Desde Intranets hasta Webs personales, el hecho de permitir que el usuario busque contenidos en tu Web es muy recomendable e incluso en algunos casos totalmente imprescindible.
Pero hacer un buscador en condiciones no es fácil. Si tenemos una Web pequeña o queremos buscar sobre pocos contenidos, la solución la podemos encontrar en una sencilla sentencia SQL usando el comando "
LIKE" o, para
MySQL, el famoso "
MATCH... AGAINST".
Sin embargo, lo de "pocos contenidos" no suele darse de forma demasiado común. La solución que suelen dar las Webs públicas es poner la típica "Búsqueda de Google" que incluso te permite ganar dinero con
Adsense, o usar la
Google Ajax Search API.
En este caso, lo bueno es que las búsquedas son bastante buenas, y el coste computacional para tu servidor es nulo.
Sin embargo es una solución que no sirve para Webs que requieran un mínimo control de sus resultados de búsqueda (por ejemplo
Todoexpertos) y mucho menos para Intranets.
Entonces... ¿qué hacemos? La solución ideal sería un motor de búsqueda para tu Web, que devuelva
resultados muy buenos, que aguante
muchísimo contenido y que
no suponga demasiado coste computacional. Además de esto, quisieramos otras cosillas como búsqueda concurrentes o que "nada se rompa" si indexo datos mientras otros los buscan.
Pues bien, esa solución existe y se llama
Lucene. Lucene es un proyecto de código abierto que implementa el núcleo un motor de búsqueda y que inicialmente se desarrolló para Java.
Básicamente aguanta todo lo que le echen, y devuelve resultados muy rápidos. Para que os hagáis a una idea
Todoexpertos tiene un índice de casi 2GB, y sus búsquedas devuelven resultados de forma casi instantánea.
Desde luego no es oro todo lo que reluce. Programar una buscador que haga un correcto uso de Lucene es razonablemente difícil.
En próximos artículos escribiré sobre
Lucene para .NET, y cómo lo hemos implementado en
Todoexpertos.