Estoy planeando hacer un motor de búsqueda a pequeña escala en mi sistema local; desde donde debo comenzar?

Usar bibliotecas existentes

Para un motor de búsqueda de pequeña a mediana escala, recomendaría usar Apache Solr y Apache Nutch (ambos son de código abierto).

Solr : la interfaz del motor de búsqueda para la biblioteca de búsqueda de Apache Lucene

Nutch : el rastreador web de código abierto utilizado para indexar contenido web.

Aquí puedes encontrar buenos tutoriales paso a paso:
Construyendo un motor de búsqueda con Nutch y Solr en 10 minutos – Building Blocks
Usando Nutch y Solr para rastrear e indexar la web – Hugh Lashbrooke

Hazlo tu mismo

Si desea desarrollar un motor de búsqueda usted mismo desde cero, eche un vistazo a
Estructura de datos de índice invertido.
Básicamente, para cada palabra o término, está creando una lista con las URL de los documentos que contienen la palabra. Las listas se pueden almacenar como archivos en el sistema de archivos o en una base de datos NoSQL para persistencia. El núcleo de la mayoría de las bases de datos NoSQL es un almacén de valores clave basado en una tabla Hash. Durante la indexación y la búsqueda, transforma el término de búsqueda en un hash. El hash sirve como clave, mientras que las listas invertidas son el valor. Esto permite un rendimiento de búsqueda cercano a O (1).

El índice invertido permite búsquedas booleanas al intersecar las listas de múltiples palabras clave.

Un enfoque alternativo es el modelo de espacio vectorial. Cada dimensión corresponde a un término separado. Si aparece un término en el documento, su valor en el vector no es cero. Las operaciones vectoriales se pueden usar para comparar documentos con consultas.

Bloques de construcción de un motor de búsqueda

Los siguientes componentes son bloques de construcción típicos de un motor de búsqueda:

tractor

  • seleccionar documentos para indexar
  • seleccione partes del documento que desea indexar
  • actualizar regularmente el índice y las clasificaciones si los documentos han cambiado, se agregan o se eliminan
  • seguir referencias a otros documentos
  • lidiar con duplicados y canonización

analizador

  • eliminar el marcado HTML y extraer texto
  • romper el texto en palabras
  • normalizar mayúsculas, guiones y diéresis

clasificación

  • clasificar los documentos por relevancia, tiempo, etc.

procesamiento de consultas

  • analizar la consulta en términos
  • analizar la búsqueda de frases y operadores de búsqueda booleanos
  • tratar con errores tipográficos
  • crear sugerencias de consulta
  • implementar búsqueda de subcadenas / búsqueda instantánea

buscar

  • buscar documentos que coincidan con la consulta y filtros adicionales, relevancia ordenada
  • diseñar las listas de resultados de búsqueda

índice

  • almacenar los documentos en una estructura de datos que permite búsquedas escalables, rápidas y booleanas

almacenamiento en caché
balanceo de carga
redundancia
analítica

Estoy de acuerdo con Wolf Garbe y que está mejor en su caso comenzando con las tecnologías existentes, eche un vistazo a http://yacy.net/ y SphinxSearch también. Sin embargo, si está haciendo esto para aprender y no solo entregar un producto, puedo proporcionarle algunos enlaces.

Para sus preguntas específicas,

1. ¿Cómo uso el hashing para una operación de búsqueda eficiente?

Estás hablando de tener un índice invertido, sospecho. Eche un vistazo a los artículos anteriores que analizan el índice invertido. Tenga en cuenta que tiene opciones aquí. Como el índice invertido o un índice invertido completo. Este último es útil si desea hacer pensar como búsquedas de proximidad y similares. Para el hash mismo

¿Qué algoritmo de hash es mejor para la unicidad y la velocidad?

Tenga cuidado al usar hashes con URL. Si bien la raíz cuadrada del número We Worship MD5, el DIOS de HASH de las URL es aún mucho más grande que el tamaño actual de la web, si se produce una colisión, obtendrá páginas sobre Britney Spears cuando esperaba páginas sobre Bugzilla. Considere el uso de filtros de floración para evitar estos problemas (suponiendo que alcance una escala suficiente).

2. ¿Cómo gestionaré los datos y?

Depende de usted. Para pequeña escala, usaría cualquier base de datos con la que esté más familiarizado. Cualquier base de datos SQL escalará hasta cientos de millones de registros sin demasiados problemas.

3. ¿Cómo funcionaría mi algoritmo de búsqueda?

Esto también depende de usted. Tú eres el que tiene el control aquí. Suponiendo que quiera poner en marcha algo lo antes posible, haría lo siguiente.

Escribe un rastreador simple y comienza a gatear. (para url; get url; find urls;) es todo lo que necesitas. Para la siembra, use el volcado de datos de Wikipedia, las listas superiores de alexa o los datos de dmoz.

Cree un indexador de índice invertido simple e indexe a medida que avanza. Limite su índice a pequeñas porciones de texto (título, metaetiquetas, etc.) por el momento hasta que solucione los problemas. Si su indexador no está utilizando el 100% de la CPU, reconsidere su enfoque ya que es incorrecto.

Construye un rango simple (solo clasifica el número de palabras en los documentos por el momento). ¡NO HAGA EL RANGO DE PÁGINA! Este paso le ahorrará mucho tiempo y hará que todo lo demás funcione.

Constrúyalo de manera predeterminada para que sea un motor OR (esto le ahorra escribir un analizador de consultas o averiguar cómo intersecar rápidamente dos listas de documentos de 10 millones)

Asegúrese de utilizar un derivador del siguiente algoritmo de derivación
Implemente una cantidad bastante grande de palabras vacías e ignore cualquier cosa de menos de 3 caracteres de longitud.

Lo anterior debería ser suficiente para ocuparte durante al menos varias semanas.

Aquí hay un enlace a una colección de artículos sobre cómo comenzar a construir un motor de búsqueda.

¿Quieres escribir un motor de búsqueda? Tener algunos enlaces

He copiado el artículo a continuación, pero el enlace anterior tiendo a actualizarlo de vez en cuando a medida que encuentro nuevos artículos.

Motor de búsqueda PHP – ¡Yioop!

Este es bastante nuevo y habla sobre la construcción y ejecución de un motor de búsqueda de uso general en PHP.

Sobre nosotros – Gigablast

Esto ha desaparecido durante mucho tiempo, pero está escrito por Matt Wells (Gigablast y Procog) y ofrece una pequeña cantidad de información sobre los problemas y problemas que trabajó mientras escribía Gigablast.

Por qué es difícil escribir su propio motor de búsqueda

Este es probablemente el más famoso de todos los artículos de motores de búsqueda, con la excepción del artículo original de Google. Escrito por Anna Patterson (Cuil), realmente explora los conceptos básicos de cómo poner en marcha un motor de búsqueda desde el rastreador hasta el indexador para servir resultados.

Una conversación con Matt Wells

Una entrevista bastante interesante con Matt Wells (Gigablast y Procog) que detalla algunos de los problemas que encontrará al ejecutar su propio motor de búsqueda.

Construyendo un motor de búsqueda

Esto tiene algunos artículos escritos sobre la creación de un motor de búsqueda desde cero. Parece haber estado en espera durante años, pero vale la pena leer parte del contenido. Si nada más es otra vista de alguien comenzando por la ruta del motor de búsqueda.

blekko | búsqueda libre de spam

El blog de ingeniería de Blekko suele ser interesante y cubre todo tipo de material aplicable a los motores de búsqueda.

http://www.boyter.org/2013/01/co

Este es un complemento descarado, pero incluso sugeriré mi pequeña implementación. Es esencialmente una caminata a través de una escritura de un motor de búsqueda en PHP. Lo implementé y funcionó bastante bien con 1 millón de páginas que ofrecían resultados razonables. En realidad, cubre todo lo que desea, rastreo, indexación, almacenamiento, clasificación con artículos que explican por qué hice ciertas cosas y el código fuente completo aquí Phindex

La anatomía de un motor de búsqueda

El abuelo de los papeles de búsqueda. Es muy antiguo, pero describe cómo se diseñó y escribió la versión original de Google.

motor de búsqueda de código abierto

Gigablast mencionado anteriormente se ha convertido en un proyecto de código abierto alojado en Github. Personalmente, todavía no he leído el código fuente, pero puedes encontrar cómo ejecutarlo en la página del desarrollador y en la página de administración.

Alta escalabilidad – Alta escalabilidad – Arquitectura DuckDuckGo – 1 millón de búsquedas profundas al día y creciendo
Alta escalabilidad – Alta escalabilidad – La anatomía de la tecnología de búsqueda: la base de datos NoSQL de blekko
Alta escalabilidad – Alta escalabilidad – Desafíos de la informática a gran escala en Google
Alta escalabilidad – Alta escalabilidad – El coloso de Google realiza búsquedas en tiempo real volcando MapReduce
Alta escalabilidad – Alta escalabilidad – Las tres edades de Google – Lote, Almacén, Instantáneo

Lo anterior es bastante interesante. El blekko es el más técnico. Si solo tienes tiempo para leer, ve con el blekko.

Otra cosa que quizás desee considerar es buscar en la fuente de los motores de indexación existentes como Solr y Sphinx. Estoy revisando personalmente la versión inicial del motor Sphinx y algún día escribiré un blog sobre cómo funciona.

Aquí hay algunos otros enlaces (descargo de responsabilidad que escribí todos) que muestran cómo implementar el modelo de espacio vectorial (algo bueno para comenzar, ya que lo hace para usted)

Modelo de búsqueda de espacio vectorial explicado
Construyendo un motor de indexación de espacio vectorial en Python
Implementación del espacio vectorial de GoLang
Implementación del espacio vectorial C #

y aquí hay un artículo mucho mejor que explica las matemáticas detrás de esto,

Página en La2600

Para la extracción de fragmentos tengo otro artículo aquí,

Creación de un generador de extracto de resultados de búsqueda en PHP

Para gatear aquí hay otro,

Por qué escribir un rastreador web no es fácil

Por último, si va y escribe su propio motor de búsqueda, escriba publicaciones de blog o artículos al respecto. Es bastante difícil encontrar este tipo de información, especialmente de los grandes (Google, Bing, Yandex, Yahoo) y me encantaría ver más artículos al respecto.

Aquí hay un tutorial de Solr paso a paso muy simple con un ejemplo concreto. En 2 horas, puede comprender los conceptos básicos de Solr y tenerlo en funcionamiento.

Para tutoriales más avanzados, sugiero la Guía de referencia de Apache Solr. Es completo y extenso, pero no necesita leerlo todo. Los ejemplos que proporcionan son muy prácticos y le permiten jugar rápidamente con datos reales.

HTH

-Saïd – Gran Sabiduría

More Interesting

¿Cuáles son los principales errores legales que las startups en etapa temprana deberían evitar?

¿Cuáles son algunas ideas innovadoras para hacer que un espacio de oficina simple se vea increíble y sea lo suficientemente interesante para posibles contrataciones en una startup?

Como contratista de software, ¿qué debo hacer cuando una empresa pequeña no paga, pero un empleado quiere pagarme lo que debe y comenzar su propio negocio?

¿Cuáles son las ideas más importantes del proyecto Startup Genome?

Quiero lanzar un servicio de venta de negocios en el Reino Unido. ¿Cuáles son los pasos que debo seguir para iniciarlo, como un plan de negocios, sitio web, marketing, etc.?

Quiero crear un blog de noticias. ¿Cuáles son mis primeros pasos para hacer esto?

¿Cómo llegó Trello a 1 millón de usuarios?

Cómo contratar a un escritor de subvenciones para obtener fondos del gobierno

¿Qué mata el crecimiento de una startup con el tiempo y cuáles son los primeros signos que puede usar para tomar medidas?

Tengo 22 años. Dejé la escuela de moda hace 1,5 años. ¿Debo volver para obtener un título con valor real o reducir mis pérdidas y comenzar mi propio negocio?

¿Cuáles son las formas más comunes a través de las cuales los CEO de startups 'crecen' a medida que su empresa crece?

He terminado el wireframing de mi aplicación móvil, pero tengo miedo de mostrárselo a un desarrollador porque creo que es una muy, muy buena idea y no quiero que me la roben. ¿Cómo debo elegir un desarrollador? ¿Qué tengo que hacer?

¿Cómo una persona pobre crea una startup y hay inversores interesados ​​en ayudar a los empresarios pobres?

Lo que es mejor: comience con un producto de marca blanca y luego saque su propio producto; o retrasar el lanzamiento hasta que pueda construir su propio producto?

¿Quiénes son ejemplos de padres jóvenes que resultaron ser personas de negocios exitosas?