2008-09-21 19 views
30

Siempre he estado interesado en desarrollar un motor de búsqueda web. ¿Cuál es un buen lugar para comenzar? He oído hablar de Lucene, pero no soy un gran chico de Java. ¿Algún otro buen recurso o proyecto de código abierto?Creación de un motor de búsqueda web

Entiendo que es una gran toma de corriente, pero eso es parte del atractivo. No estoy buscando crear el próximo Google, solo algo que puedo usar para buscar un subconjunto de sitios que pueda interesarme.

+0

Depende de sus lenguajes de programación favoritos. Java está fuera de toda duda. ¿Codifica en asp.net, perl, python, php, ...eso sería importante saber antes de que se pueda ofrecer una respuesta adecuada :) – Anheledir

+0

hey! echa un vistazo a [mío] (http://code.google.com/p/goomez/) ... buscador de archivos muy simple basado en [lucene.net] (http://incubator.apache.org/lucene.net/) – sebagomez

+0

¿Has probado nutch.net un puerto de nutch java .... – chugh97

Respuesta

48

Hay varias partes a un motor de búsqueda. En términos generales, de manera irremediablemente general (gente, se sienten libres para editar si siente que puede agregar una mejor descripción, enlaces, etc.):

  1. El rastreador. Esta es la parte que atraviesa 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 golpear determinados dominios, obedecer la convención de robots.txt, etc.

  2. El analizador. Esto lee los datos obtenidos por el rastreador, los analiza, guarda los metadatos que necesita, elimina los desperdicios y posiblemente hace sugerencias al rastreador sobre qué buscar la próxima vez.

  3. El indexador. Lee las cosas analizadas por el analizador y crea índices invertidos en los términos encontrados en las páginas web. Puede ser tan inteligente como usted quiere que sea - se aplican las técnicas de PNL para hacer índices de conceptos, entrecruzar cosas, tirar sinónimos, etc.

  4. El motor de clasificación. Dado unos pocos miles de URL que coinciden con "manzana", ¿cómo se decide qué resultado es el mejor? Pero el índice no te da esa información. Debe analizar el texto, la estructura de enlace y cualquier otra pieza que desee ver y crear algunos puntajes.Esto puede hacerse completamente sobre la marcha (eso es realmente difícil), o en base a nociones precalculadas de "expertos" (ver PageRank, etc.).

  5. La parte delantera. Algo necesita recibir consultas del usuario, pulsar el motor central y responder; este algo necesita ser inteligente sobre los resultados del almacenamiento en caché, posiblemente mezclando resultados de otras fuentes, etc. Tiene su propio conjunto de problemas.

Mi consejo - elegir cuál de estos intereses que más, descarga o Lucene Xapian o cualquier otro proyecto de código abierto por ahí, sacar la parte que hace una de las tareas anteriores, y tratar de reemplazarlo . Con suerte, con algo mejor :-).

Algunos enlaces que pueden resultar útiles: "Agile web-crawler", un papel de Estonia (en Inglés) Sphinx Search engine, una indexación y la API de búsqueda. Diseñado para grandes DB, pero modular y abierto. "Information Retrieval, un libro de texto sobre IR de Manning et al. Buena visión general de cómo se crean los índices, varios problemas que surgen, así como algunas discusiones sobre el rastreo, etc. ¡Versión gratuita en línea (por ahora)!

+1

Awesome answer. ¡Gracias! – Aseem

+0

Aquí está mi implementación del motor de clasificación (elasticsearch) y el front-end (angularjs) https://machinelearningblogs.com/2016/12/12/how-to-build-a-search-engine-part-1/ –

5

Me parece que la mayor parte es la indexación de sitios. Hacer bots para buscar en Internet y analizar sus contenidos.

Un amigo y yo estábamos hablando de lo increíble que Google y otros motores de búsqueda tienen que estar bajo el capó. Millones de resultados en menos de medio segundo? Loca. Creo que pueden tener resultados de búsqueda preestablecidos para los elementos comúnmente buscados.

editar: This sitio parece bastante interesante.

+0

Ellos lo hacen - publican documentos académicos sobre las mejores formas de almacenar los resultados de forma periódica. ¿Simplemente almacena en caché las respuestas más recientes? ¿Miras los registros de consultas e intentas predecir qué necesitas almacenar en caché y precomputar? Cosas fascinantes. – SquareCog

6

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

4

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

[Según tengo entendido, el proyecto de búsqueda de Wikia ha finalizado. Sin embargo creo que involucrarse con un proyecto de código abierto existente es una buena manera de aliviar en una empresa de este tamaño.]

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

0

Aquí hay un enfoque un tanto diferente, si no está demasiado interesado en la programación del mismo, pero está más interesado en los resultados: considere construirlo usando Google Custom Search Engine API.

Ventajas:

  • Google hace todo el trabajo pesado para usted
  • interfaz de usuario familiar y el comportamiento de sus usuarios
  • puede tener algo en marcha y funcionando en cuestión de minutos
  • Un montón de capacidades de personalización

Desventajas:

  • Usted no está escribiendo código, por lo que no hay oportunidad de aprendizaje
  • Todo lo que desea buscar debe ser pública & en el índice de Google ya
  • Su resultado está ligado a Google
+0

No lo llamaría exactamente una API ... – Sean

+0

¿Por qué no? No todas las API son un conjunto de funciones invocables. Puede alojar la descripción XML de su motor de búsqueda en su propio sitio web, y luego ni siquiera está utilizando la interfaz web de Google para esto. –

1

Si está interesado en conocer 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 los motores de búsqueda, puedo recomendar el libro Managing Gigabytes de Ian Witten, Alistair Moffat y Tim C. Bell. (Divulgación: Alistair Moffat era mi supervisor universitario.) Aunque está un poco anticuado ahora (la primera edición salió en 1994 y la segunda en 1999, ¿qué hay de difícil ahora para administrar gigabytes?), La teoría subyacente sigue siendo sólida y es una gran introducción tanto a la indexación como al uso de la compresión en los sistemas de indexación y recuperación.

1

Estoy interesado en el motor de búsqueda también. Recomendé tanto Apache Hadoop MapReduce como Apache Lucene. Cada vez más rápido por Hadoop Cluster es la mejor manera.

Cuestiones relacionadas