Pregunta

Siempre me ha interesado desarrollar un motor de búsqueda web.¿Cuál es un buen lugar para empezar?He oído hablar de Lucene, pero no soy un gran aficionado a Java.¿Algún otro buen recurso o proyecto de código abierto?

Entiendo que es una tarea enorme, pero eso es parte del atractivo.No estoy buscando crear el próximo Google, solo algo que pueda usar para buscar en un subconjunto de sitios que podrían interesarme.

¿Fue útil?

Solución

Un motor de búsqueda consta de varias partes.En términos generales, de manera irremediablemente general (amigos, siéntete libre de editar si cree que puede agregar mejores descripciones, enlaces, etc.):

  1. El rastreador.Esta es la parte que recorre la web, toma las páginas y almacena información sobre ellas en algún almacén de datos central.Además del texto en sí, querrás cosas como la hora a la que accediste, etc.El rastreador debe ser lo suficientemente inteligente como para saber con qué frecuencia acceder a ciertos dominios, obedecer la convención robots.txt, etc.

  2. el analizador.Esto lee los datos obtenidos por el rastreador, los analiza, guarda los metadatos que necesita, descarta la basura y posiblemente le hace sugerencias al rastreador sobre qué recuperar la próxima vez.

  3. el indexador.Lee el material analizado por el analizador y crea índices invertidos en los términos que se encuentran en las páginas web.Puede ser tan inteligente como quieras: aplicar técnicas de PNL para crear índices de conceptos, vincular elementos, incluir sinónimos, etc.

  4. El motor de clasificación.Dados unos miles de URL que coinciden con "apple", ¿cómo se decide qué resultado es el mejor?Pero el índice no te da esa información.Debes analizar el texto, la estructura de enlaces y cualquier otra pieza que quieras ver, y crear algunas partituras.Esto se puede hacer completamente sobre la marcha (eso es realmente difícil) o basándose en algunas nociones precalculadas de "expertos" (ver PageRank, etc.).

  5. la parte delantera.Algo necesita recibir las consultas de los usuarios, acceder al motor central y responder;este algo debe ser inteligente a la hora de almacenar en caché los resultados, posiblemente mezclar resultados de otras fuentes, etc.Tiene su propio conjunto de problemas.

Mi consejo: elija cuál de estos le interesa más, descargue Lucene o Xapian o cualquier otro proyecto de código abierto, extraiga la parte que realiza una de las tareas anteriores e intente reemplazarla.Ojalá con algo mejor :-).

Algunos enlaces que pueden resultar útiles:"Rastreador web ágil", un artículo de Estonia (en inglés)Motor de búsqueda Esfinge, una API de indexación y búsqueda.Diseñado para bases de datos grandes, pero modular y abierto."Recuperación de información, un libro de texto sobre RI de Manning et al.Buena descripción general de cómo se construyen los índices, varios problemas que surgen, así como algunas discusiones sobre el rastreo, etc.¡Versión en línea gratuita (por ahora)!

Otros consejos

Xapian es otra opción para ti.He oído que escala mejor que algunas implementaciones de Lucene.

Verificar loco, está escrito por el mismo tipo que creó Lucene (corte doug).

Me parece que la parte más importante es la indexación de sitios.Crear bots para rastrear Internet y analizar sus contenidos.

Un amigo y yo estábamos hablando de lo increíbles que deben ser Google y otros motores de búsqueda bajo el capó.¿Millones de resultados en menos de medio segundo?Loco.Creo que podrían tener resultados de búsqueda preestablecidos para los elementos más buscados.

editar:Este El sitio parece bastante interesante.

Comenzaría con un proyecto existente, como el motor de búsqueda de código abierto de Wikia.

[Tengo entendido que el proyecto Wikia Search ha finalizado.Sin embargo, creo que involucrarse en un proyecto de código abierto existente es una buena manera de facilitar una empresa de este tamaño.]

http://re.search.wikia.com/about/get_involved.html

Si está interesado en aprender sobre la teoría detrás de la recuperación de información y algunos de los detalles técnicos detrás de la implementación de motores de búsqueda, puedo recomendarle el libro. Administrar Gigabytes por Ian Witten, Alistair Moffat y Tim C.Campana.(Divulgación:Alistair Moffat era mi supervisor en la universidad). Aunque ahora está un poco anticuado (la primera edición salió en 1994 y la segunda en 1999; ¿qué tiene de difícil administrar gigabytes ahora?), la teoría subyacente sigue siendo sólida y es una excelente introducción. tanto a la indexación como al uso de la compresión en los sistemas de indexación y recuperación.

También estoy interesado en el motor de búsqueda.Recomendé Apache Hadoop MapReduce y Apache Lucene.Ser más rápido con Hadoop Cluster es la mejor manera.

Hay puertos de Lucene.Zend tiene uno disponible gratuitamente.Eche un vistazo a este rápido tutorial: http://devzone.zend.com/node/view/id/91

Aquí hay un enfoque ligeramente diferente, si no está tan interesado en la programación sino más bien en los resultados:considere construirlo usando Motor de búsqueda personalizado de Google API.

Ventajas:

  • Google hace todo el trabajo pesado por ti
  • Interfaz de usuario y comportamiento familiares para sus usuarios
  • Puede tener algo listo y funcionando en minutos
  • Muchas capacidades de personalización

Desventajas:

  • No estás escribiendo código, por lo que no hay oportunidad de aprender allí.
  • Todo lo que quieras buscar debe ser público y estar ya en el índice de Google.
  • Tu resultado está vinculado a Google
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top