utilizados una tipos programar principales personalizar personalizado motores motor mas lista internet internacionales google funciona español ejemplos crear como caracteristicas búsqueda busqueda search search-engine

search - una - principales motores de busqueda



Construyendo un motor de búsqueda web (9)

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?

Entiendo que es una gran toma de control, 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 pueda interesarme.


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

[Según entiendo, el proyecto Wikia Search ha finalizado. Sin embargo, creo que involucrarse con 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


Este es un enfoque ligeramente diferente, si no está tan interesado en la programación del mismo, sino que está más interesado en los resultados: considere construirlo utilizando la API del motor de búsqueda personalizado de Google .

Ventajas:

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

Desventajas:

  • No estás escribiendo código, por lo que no hay oportunidad de aprendizaje allí
  • Todo lo que desea buscar debe ser público y en el índice de Google ya
  • Tu resultado está vinculado a Google

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.



Hay varias partes para un motor de búsqueda. En términos generales, de una manera desesperadamente general (amigos, siéntanse libres de editar si creen que pueden agregar mejores descripciones, 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 quiera: aplicar técnicas de PNL para crear índices de conceptos, reticular elementos, lanzar 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: elija cuál de estos intereses le interesa más, descargue Lucene o Xapian o cualquier otro proyecto de código abierto, extraiga el bit que hace una de las tareas anteriores e intente reemplazarlo. Con suerte, con algo mejor :-).

Algunos enlaces que pueden ser útiles: "Agile web-crawler" , un documento de Estonia (en inglés) Sphinx Search engine , una API de indexación y búsqueda. Diseñado para grandes DB, pero modular y abierto. "Recuperación de información , un libro de texto sobre IR de Manning et al. Una 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)!


Me parece que la parte más importante 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.



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 por 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.


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