¿Cómo creo un motor de búsqueda?

Estoy compartiendo cómo puede crear un motor de búsqueda simple, nuestro objetivo no es reemplazar a los grandes gigantes, por ejemplo, Google, Yahoo, etc., sino hacer un buen intento para tener nuestro propio motor de búsqueda. yo

Antes de comenzar, uno debe saber cómo funciona el motor de búsqueda.

¿Cómo funcionan los motores de búsqueda?

Cualquier motor de búsqueda utilizado se basa en varias fórmulas matemáticas complejas utilizadas para generar los resultados de búsqueda. Los resultados obtenidos para la consulta específica se muestran en la SERP o en la página de resultados del motor de búsqueda. Los algoritmos de los motores de búsqueda obtienen los elementos clave de la página web, que incluye el título de la página, el contenido y la densidad de palabras clave. Luego aparece una clasificación basada en la cual los resultados se colocan en las páginas. Todos y cada motor de búsqueda tiene su propio algoritmo único. Por lo tanto, un resultado de búsqueda que tiene una clasificación superior en Yahoo no garantiza una clasificación similar en Google y viceversa. Estos algoritmos de búsqueda que utilizan los motores de búsqueda son

  • secretos muy bien guardados,
  • También se someten constantemente a modificaciones y revisiones.

Por lo tanto, los criterios para optimizar mejor un sitio deben verificarse a través de la observación constante, junto con varios intentos, no solo una vez, sino que deben realizarse continuamente.

En general, se dice que el SEO (Optimización del motor de búsqueda) menos reputado firma exageración, ya que la respuesta a mejores clasificaciones del sitio funcionará de la mejor manera por un período limitado hasta el momento en que los desarrolladores del motor de búsqueda sean lo suficientemente sabios con las tácticas cambiar su algoritmo Normalmente, los sitios que usan estos trucos son etiquetados como spam por los motores de búsqueda y, como consecuencia, su clasificación baja.

Los motores de búsqueda solo comprueban los textos en las páginas web y utilizan la estructura HTML subyacente para descubrir la relevancia. Las imágenes, fotos o contenidos dinámicos animados en Flash no tienen sentido para los motores de búsqueda; sin embargo, el contenido de texto real es más relevante para los motores de búsqueda. Es una tarea desafiante para los desarrolladores de Flash construir un sitio Flash que sea amigable para los motores de búsqueda. Como resultado, los sitios flash tenderán a no clasificarse tan alto en comparación con los sitios desarrollados con HTML y CSS bien codificados (hojas de estilo en cascada: un mecanismo complejo para agregar estilos a las páginas del sitio web más allá del HTML normal). Si los términos que buscamos para que no se encuentren en el texto de nuestro sitio web, será muy difícil que el sitio web produzca una ubicación alta en las páginas de resultados del motor de búsqueda.

Buscadores web

Normalmente nos referimos al motor de búsqueda web cuando hablamos de motores de búsqueda. Un motor de búsqueda web típico comienza a funcionar enviando una araña que tiene la capacidad de obtener la mayor cantidad de documentos posible contra las palabras clave proporcionadas. Hay otro programa llamado indexador , y luego comienza a leer estos documentos y comienza a crear los índices basados ​​en los tokens encontrados en cada documento. Cada motor de búsqueda usa su propio algoritmo patentado para crear los índices de tal manera que, idealmente, solo se devuelven resultados significativos para cada consulta.

Dado que casi todos los propietarios de sitios web confían en el hecho de que los motores de búsqueda enviarán tráfico a su sitio web y también toda la industria ha crecido en torno al concepto de optimización de contenido web para mejorar su ubicación en los resultados del motor de búsqueda, debemos adquirir el conocimiento adecuado sobre optimización de motores de búsqueda o SEO.

Consejos a seguir durante el uso de motores de búsqueda

Debemos asegurarnos de que se nos llame como uno de los mejores buscadores web que cualquier cosa que necesitemos escribir para decirle al motor de búsqueda debe ser exactamente lo que estamos buscando. Los operadores de búsqueda se dividen en dos grandes categorías:

  • Operadores booleanos y
  • Operadores no booleanos

Un operador es una palabra o símbolo que escribimos. Proporciona al motor de búsqueda las instrucciones que le ayudan a saber qué buscar. Al utilizar estos operadores, podemos limitar o ampliar nuestra búsqueda, lo que nos ayuda a localizar los sitios web que pueden serle útiles.

Necesitamos revisar los motores de búsqueda individuales para averiguar en qué operadores se basa.

Técnicas de búsqueda booleana:

  • Y – Esto significa que los resultados de la búsqueda deben tener ambas palabras. Muy a menudo se escribe en MAYÚSCULAS, pero no es obligatorio. Esto reduce la cuenta de los sitios web. Por lo tanto, se reduce a temas específicos. Por ejemplo, aire, agua y contaminación buscará los sitios web que contengan las tres palabras clave: aire, agua y contaminación.
  • O – Esto significa que los resultados de la búsqueda pueden tener cualquiera de los términos ingresados. Esto aumenta el número de sitios web que serán vistos, ampliando así nuestra búsqueda. Por ejemplo, aire O contaminación O agua buscará los sitios web que contengan aire o contaminación o agua.
  • NOT: esto significa que cualquier resultado que contenga la segunda palabra clave o el token se excluirá del resultado de la búsqueda. El uso de NO disminuye el número de sitios que se incluirán en la lista como resultado de nuestra búsqueda. Por lo tanto, reduce nuestra búsqueda. por ejemplo, si ingresamos los tokens, el aire NO es contaminación, los resultados enumerarán los sitios web que contienen aire pero no contaminación.

Debemos tener mucho cuidado al NO, porque si un sitio web menciona contaminación incluso una vez, puede excluirse del resultado de la búsqueda. Esto podría llevar a la exclusión de algunos sitios web importantes. Del mismo modo, debemos tener cuidado al usar OR. ya que esto puede terminar con una gran cantidad de sitios que requieren clasificación.

Técnicas de búsqueda no booleanas :

  • + Esto funciona de la misma manera que funciona AND. Esto hace que el token sea obligatorio en los resultados de búsqueda. El símbolo + debe colocarse directamente en frente del token de búsqueda y no debe tener espacios. por ejemplo, aire + agua + contaminación buscará todos los sitios web que contienen estos tres tokens: aire, agua y contaminación.
  • – Esto funciona de la misma manera que NO funciona. Esto está destinado a excluir el token que sigue al símbolo -. por ejemplo, la contaminación del aire enumerará todos los sitios web que contienen aire pero no contaminación.
  • “” Este símbolo se coloca alrededor de los tokens para indicar que el motor de búsqueda buscará la frase exacta. por ejemplo, “contaminación del agua del aire” buscará esa frase exacta. Esto hará que su búsqueda sea muy específica.

De manera similar a los términos booleanos, debemos tener cuidado al usarlo, ya que esto puede eliminar los sitios web que podrían mencionar el término que no queremos, pero que en realidad no se trata de ese término. –

El agua eliminará todos los sitios web que tratan sobre la contaminación del aire, pero también hablan sobre la contaminación del agua.

Creando nuestros propios motores de búsqueda

Al estar cansados ​​de usar los motores de búsqueda genéricos, por ejemplo, Google y Yahoo cada vez, deseamos estar atentos a cualquier cosa. La mejor idea sería intentar crear nuestro propio motor de búsqueda utilizando las tecnologías de código abierto como PHP y MySQL. Permítanme aclarar que nuestro objetivo no es expulsar del mercado a los grandes gigantes, como Google, Yahoo, Bing, etc., pero podemos hacer un buen intento de tener nuestro propio motor de búsqueda.

En este enfoque, aprenderemos a construir nuestro propio motor de búsqueda y eventualmente veríamos a los visitantes que vienen y realizan una búsqueda en nuestro sitio web en masa con la ayuda de un formulario de búsqueda HTML, que tiene el botón estándar. Aquí utilizaremos el lenguaje php y los servicios de base de datos MySql para implementar esta función. Por lo tanto, se espera que los lectores tengan un buen conocimiento de los conceptos básicos de ambos antes de comenzar a implementar. En este documento, utilizaremos el código más básico y no revisaremos las complejas consultas SQL. Aquí, podemos suponer que los conceptos básicos del lenguaje de consulta estructurado o SQL son conocidos por todos y lo ha estado utilizando de una forma u otra con más frecuencia. Así que ahora concentrémonos en nuestro primer código HTML que nos ayudará a crear un Botón de búsqueda y un formulario que será utilizado por cada visitante para ingresar en cualquier consulta.

Parte de la base de datos:

Como hemos mencionado que MySQL es uno de los requisitos previos en nuestro enfoque, nuestro primer paso sería configurar la base de datos MySQL en funcionamiento. Conéctese a MySQL, podemos usar cualquiera de las herramientas gratuitas basadas en la interfaz de usuario, por ejemplo, Squirrel, HeidiSQL o DBVisualiser o la consola de administración de MySQL. Una vez conectado, ejecute el siguiente SQL que creará una tabla llamada SEARCH_ENGINE.

Listado 1: Una declaración SQL que creará una tabla –

  CREATE TABLE SEARCH_ENGINE (
        `id` INT (11) NO NULL AUTO_INCREMENT,
        `pageurl` VARCHAR (255) NO NULL,
        `pagecontent` TEXT NOT NULL,
        CLAVE PRIMARIA (`id`))

La consulta anterior creará una tabla en la base de datos que se utilizará para almacenar los detalles o la información que se almacenará en la base de datos.

Crear el formulario:

Ahora, una vez que la base de datos esté lista, hagamos el formulario que será utilizado por los visitantes o los usuarios finales para realizar su búsqueda. Llamemos a este archivo: ‘index.php’, que es un formulario de búsqueda simple que tiene un botón. Aquí usaremos GET en lugar de POST. Por lo tanto, la información se hace bastante visible en la barra de direcciones.

Listado 2: Nuestro archivo index.php –

 
 
        
               Mi motor de búsqueda 
        
        
              
                     
                            

Mi motor de búsqueda



10 20 50

Nuestro formulario ya está completo y listo para ser utilizado. Los usuarios finales utilizarán este formulario para ingresar una consulta y, al mismo tiempo, permitirá a los usuarios restringir el recuento de resultados que deben mostrarse en el formulario.

Procesando la consulta:

Permítanos crear un nuevo archivo ‘search.php’ que es la página donde se mostrarán o mostrarán los resultados de la búsqueda. Este archivo está dividido en las siguientes secciones:

· Primero conectemos a la base de datos:

Listado 3: conexión DB

 
        mysql_connect ("localhost", "USER_NAME", "PASSWORD"); 
        mysql_select_db ("DB_NAME");

· Formule la consulta: una vez que estamos conectados a la base de datos, formamos la consulta utilizando los tokens que los usuarios finales han ingresado. Esto se muestra a continuación:

Listado 4: Construya la consulta junto con los tokens que los usuarios han ingresado –

 
        $ search_exploded = explotar ("", $ buscar);
        $ x = 0; 
        foreach ($ search_exploded como $ search_each) {
              $ x ++;
              $ construct = "";
              si ($ x == 1)
                     $ construct. = "palabras clave LIKE '% $ search_each%'";
              más
                     $ construct. = "Y palabras clave como '% $ search_each%'";
        }
        $ construct = "SELECT * FROM SEARCH_ENGINE WHERE $ construct";
        $ run = mysql_query ($ construcción); 

· Nuestro próximo trabajo es obtener los resultados de la base de datos y presentarlos al usuario. Si la búsqueda no produce ningún resultado, debemos mostrar un mensaje apropiado al usuario como se muestra a continuación:

Listado 4: Obtenga el resultado y preséntelo al usuario –

 
        if ($ foundnum == 0)
              echo "Lo sentimos, no hay resultados coincidentes para  $ search .
              

1. Pruebe con palabras más generales. por ejemplo: si desea buscar 'cómo crear un sitio web', use una palabra clave general como 'crear' 'sitio web'
2. Pruebe diferentes palabras con significado similar
3. Revise su ortografía "; más { echo "$ foundnum resultados encontrados!

"; while ($ runrows = mysql_fetch_assoc ($ run)) { $ título = $ runrows ['título']; $ desc = $ runrows ['descripción']; $ url = $ runrows ['url']; echo " $ title
$ desc
$ url

"; } }

Ahora nuestro motor de búsqueda está listo para ser utilizado. El código explicado anteriormente en partes se enumera en –

Listado 5: El archivo Complete Search.PHP –

  <? php
        $ button = $ _GET ['enviar'];
        $ search = $ _GET ['buscar']; 
 
        si (botón! $)
              echo "no enviaste una palabra clave";
        más {
              if (strlen ($ búsqueda) <= 1)
                     echo "Término de búsqueda demasiado corto";
              más {
                     echo "Has buscado  $ search  

"; mysql_connect ("localhost", "NOMBRE DE USUARIO", "CONTRASEÑA"); mysql_select_db ("DBNAME"); $ search_exploded = explotar ("", $ buscar); $ x = 0; foreach ($ search_exploded como $ search_each) { $ x ++; $ construct = ""; si ($ x == 1) $ construct. = "palabras clave LIKE '% $ search_each%'"; más $ construct. = "Y palabras clave como '% $ search_each%'"; } $ construct = "SELECT * FROM SEARCH_ENGINE WHERE $ construct"; $ run = mysql_query ($ construcción); $ foundnum = mysql_num_rows ($ ejecución); if ($ foundnum == 0) echo "Lo sentimos, no hay resultados coincidentes para $ search .

1. Intente con palabras más generales. por ejemplo: Si desea buscar 'cómo crear un sitio web' luego use palabras clave generales como 'crear' 'sitio web'
2. Pruebe diferentes palabras con un significado similar
3. Por favor revise su ortografía "; más { echo "$ foundnum resultados encontrados!

"; while ($ runrows = mysql_fetch_assoc ($ run)) { $ título = $ runrows ['título']; $ desc = $ runrows ['descripción']; $ url = $ runrows ['url']; echo " $ title
$ desc
$ url

"; } } } } ?>

Arquitectura del motor de búsqueda

Antes de entrar en más detalles, hablemos sobre cuáles deberían ser nuestros objetivos al desarrollar un motor de búsqueda. A continuación se enumera un breve conjunto de objetivos en los que debemos centrarnos:

  • WebCrawler, el indexador y el almacenamiento de documentos que deberían ser capaces de manejar un gran volumen de documentos pueden ser de 1 millón o incluso más. .
  • Deberíamos seguir el desarrollo basado en pruebas que ayudaría a aplicar un buen diseño y un código modular.
  • Deberíamos tener la capacidad de admitir varias estrategias para cosas como el índice, el almacén de documentos, la búsqueda, etc.

Un motor de búsqueda típico consta de pocas partes:

  • Un rastreador que se utiliza para extraer documentos externos.
  • Un índice que es el lugar donde se almacenan los documentos en un árbol invertido y
  • Una tienda de documentos para guardar los documentos.

El rastreador

Para rastrear, deberíamos crear una lista de URL. Hay algunas formas genéricas de hacer esto que se enumeran a continuación:

  • Lo más común es alimentar al rastreador con una lista de enlaces que contienen muchos enlaces como se enumeran. Nuestro próximo trabajo es rastrearlos y cosechar a medida que avanzamos en la lista.
  • Otro enfoque es descargar una lista de URL y luego usar esa lista.

Dado que nuestro objetivo es obtener solo el sitio web real, permítanos escribir un analizador simple para extraer los datos apropiados. Es bastante sencillo como se muestra a continuación:

Listado 6: El analizador –

  $ file_handle = fopen ("Quantcast-Top-Million.txt", "r");
 
        while (! feof ($ file_handle)) {
              $ line = fgets ($ file_handle);
              if (preg_match ('/ ^ \ d + /', $ line)) {# si comienza con cierta cantidad de dígitos
                     $ tmp = explotar ("\ t", $ línea);
                     $ rank = trim ($ tmp [0]);
                     $ url = trim ($ tmp [1]);
                     if ($ url! = 'Perfil oculto') {# El perfil oculto aparece a veces simplemente ignorar
                            echo $	
			 }
		 }
	 }
	 fclose ($ file_handle);

DESCARGANDO

La descarga de los datos llevará algún tiempo, por lo tanto, debemos estar preparados para una espera más larga. Podemos escribir un rastreador muy básico en PHP simplemente usando un file_get_contents y pegando en una url. Echemos un vistazo al siguiente código:

Listado 7: El rastreador –

  $ file_handle = fopen ("urllist.txt", "r");
          while (! feof ($ file_handle)) {
                  $ url = trim (fgets ($ file_handle));
                  $ content = file_get_contents ($ url);
                  $ document = array ($ url, $ contenido);
                  $ serializado = serializar ($ documento);
                  $ fp = fopen ('./ documentos /'. md5 ($ url), 'w');
                  fwrite ($ fp, $ serializado);
                  fclose ($ fp);
          }
          fclose ($ file_handle);

El código anterior es esencialmente un rastreador de un solo subproceso. Simplemente recorre cada url del archivo, extrae el contenido y luego lo guarda en el disco. Lo único que debemos tener en cuenta aquí es que almacena la url y el contenido en un documento, ya que es posible que necesitemos usar la URL para fines de clasificación y también es útil llevar un registro del origen del documento. Debemos tener en cuenta que podemos quedarnos sin límites de almacenamiento del sistema de archivos al intentar almacenar muchos documentos en una carpeta.

EL ÍNDICE

La razón por la que inicialmente hablé sobre el mecanismo de desarrollo impulsado por pruebas, es porque prefiero el enfoque ascendente. El índice, que vamos a crear, debe tener algunas responsabilidades muy simples que se enumeran a continuación:

  • Necesita almacenar su contenido en el disco y recuperarlos.
  • Necesita poder limpiarse cuando decidimos regenerar las cosas.
  • Debe validar los documentos que está almacenando.

Tener definidas estas tareas Tengamos en cuenta la siguiente interfaz:

Listado 8: La interfaz –

  interfaz iindex {
                  función pública storeDocuments ($ nombre, matriz $ documentos);
                  función pública getDocuments ($ nombre);
                  función pública clearIndex ();
                  función pública validateDocument (array $ document);
          }

LA TIENDA DE DOCUMENTOS

El almacén de documentos es algo extraño si vamos a indexar cosas que probablemente ya tenemos lo que queríamos almacenar en otro lugar. Lo más obvio en este caso es que los documentos ya están en alguna base de datos.

EL INDICADOR

El siguiente paso en nuestro enfoque para construir nuestra búsqueda es crear el indexador. Un indexador toma un documento, lo divide y lo introduce en el índice, y posiblemente también en el almacén de documentos, según nuestra implementación.

INDEXACIÓN

Ahora que tenemos la capacidad de almacenar e indexar algunos documentos. Veamos los pasos que necesitamos aquí para tener la indexación en su lugar:

  • Lo primero que se supone que debemos hacer aquí es establecer el límite de tiempo en ilimitado ya que el proceso de indexación puede llevar más tiempo del esperado.
  • Nuestro siguiente paso es definir la posición del índice y los documentos que se van a quedar para evitar los errores.

BUSCANDO

La búsqueda requiere un enfoque relativamente simple. De hecho, solo requerimos un único método como se muestra a continuación:

Listado 9 : La interfaz de búsqueda –

  interfaz isearch {
                        función pública dosearch ($ searchterms);
        }

Por supuesto, la implementación real no es tan fácil. Es bastante más complejo de lo que parece.

Conclusión

He tratado de cubrir las diferentes áreas del motor de búsqueda y sus características. También he discutido sobre cómo crear nuestro propio motor de búsqueda con la ayuda de MySQL.

Espero que ya tenga una buena idea de JDB o Java Debugger.

Hay dos componentes principales para diseñar un sistema de búsqueda exitoso. Se sustentan en una sólida comprensión de la información que sirve el motor de búsqueda y los usuarios que la necesitan. Este campo de trabajo es tanto una búsqueda intelectual como tecnológica.

A menudo, las personas piensan en construir un sistema de búsqueda puramente desde una perspectiva técnica. Sin embargo, esto proporciona solo la mitad de lo que realmente se requiere para diseñar un sistema de búsqueda centrado en el usuario. Describí en una publicación de blog Search Engineering 101 los pasos dados para configurar un sistema de búsqueda no preparado para producción con el fin de demostrar la ingeniería de búsqueda de principio a fin. Comenzamos con los Pasos 1-6 observando el trabajo básico requerido para poner en funcionamiento un sistema de búsqueda. Para este ejercicio, uso Elasticsearch, MySQL, PHP y Perl como mis herramientas de elección para construir un sistema de búsqueda básico utilizando contenido rastreado desde un sitio web. Con el fin de aprender más sobre las cosas que los usuarios desean y utilizar la comprensión para ajustar el sistema para servirlos mejor, el seguimiento , la medición , el monitoreo y la evaluación forman una gran parte de la ingeniería de búsqueda. Estos se describen en los Pasos 7-10 que se cubren en la segunda mitad de la publicación.

Hola,

Me gustaría redirigir esta publicación a una pieza altamente relevante e informativa.

https://www.linkedin.com/pulse/2

Este artículo ha sido útil para muchos que querían una guía para construir un motor de búsqueda.

Estoy seguro de que esto te ayudará.

Gracias.