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.