Si quisiera construir un motor de búsqueda, ¿cómo comenzaría? [cerrado]

9

¿Alguien puede señalarme en la dirección correcta? Realmente no tengo experiencia escribiendo código, pero aprendo rápido. No estoy tratando de decir que será fácil, pero espero que alguien pueda ayudarme ...

Ravi Sheth
fuente
66
Si no tienes experiencia escribiendo código, ¿qué tal aprender a codificar primero? Construir un motor de búsqueda es una especie de exageración para alguien nuevo en la programación.
Terence Ponce
3
Como dice Terence, no es algo para aquellos nuevos en la programación. Cualquier motor de búsqueda que sea bueno tiende a ser un trabajo bastante complicado, hay una razón por la cual Google es tan grande que hacen una tarea muy difícil bastante bien. Incluso los programadores experimentados tienden a preferir usar algo preconstruido. Si da una idea de para qué lo quiere, tal vez podamos orientarlo en la dirección correcta.
Orbling
2
Comience con un proyecto más pequeño. La construcción de un motor de búsqueda implica una gran cantidad de código. ¿Y cómo recopilas todos los datos para tu motor de búsqueda? Necesitará mucho más código y una infraestructura masiva. Realmente, comience en proyectos más pequeños y continúe o simplemente se sentirá frustrado.
James
1
Este libro me ayudó a comprender qué son los motores de búsqueda y cómo están construidos: nlp.stanford.edu/IR-book
devnull

Respuestas:

16

Escribí esto para un blog que solía tener cuando ... ya no estaba en la web, así que ... ¡aquí está! :

Cómo escribir un buscador

Darren Rowse en probolgger.net está llevando a cabo un proyecto de escritura grupal sobre cualquier cosa "Cómo". Este es uno de los pocos blogs que leo regularmente, así que me imagino por qué no escribir algo que valga la pena leer para variar, más bien mi diatriba violenta estándar donde terminaré amenazando con apuñalar a Hugo Chaves en la garganta.

Decidí escribir "Cómo escribir un motor de búsqueda". Elegí este tema por dos razones:

  1. No hay mucha buena información sobre esto en la web.
  2. Actualmente estoy escribiendo uno para uno de mis clientes.

Mi cliente es un minorista en línea de gran tamaño, por lo que no busco en toda la web solo en su sitio, más específicamente solo en los productos a la venta en su sitio. Sin embargo, se pueden utilizar las mismas técnicas para escribir una más compleja que la utilizada para buscar en Internet. Sé que este no es un blog de tecnología, por lo que no profundizaré demasiado en los tecnicismos, ni hablaré sobre los requisitos de potencia de procesamiento / hardware o el rastreo web.

Estoy usando una técnica bastante simple, tengo una tabla (tblKeywords) con tres campos:

  1. Itemid (si está haciendo una búsqueda en la web, esto sería URL)
  2. KeyWord (palabra clave indexada)
  3. Peso (este es un valor numérico de 1 a 100 cuanto mayor es este número, más significativo (peso) lleva la palabra clave) * PK = ItemID + KeyWord

Lo primero que hago es recopilar palabras individuales de cualquier lugar que sea relevante. Para mi cliente, sacaré palabras de la tabla de productos. Específicamente de los campos Itemid, ItemName, ItemShortDescription, ItemLongDescription, Manufacturer, ManufacturerSKU, Category1, Category2, Category3 ect. Si está indexando páginas web, puede extraer datos del texto de la página, el título de la página, la URL o los enlaces en otras páginas que enlazan con la página que se está indexando.

El valor del peso está determinado por el origen de la palabra clave. Por ejemplo, en mi caso, el SKU de fabricación del artículo obtendría un peso de 100, mientras que una palabra del nombre del artículo podría tener un peso de 25. Una palabra de la descripción del artículo largo podría tener un peso de 5. Si está indexando páginas web, las palabras del título de la página puede tener un peso de 75, mientras que una palabra en negrita del texto de la página puede tener un peso de 10. Si una palabra se repite en más de una vez o \ y en más de un lugar, sumaría el peso por cada vez se produce Por ejemplo, si la palabra "Camisa" viene de dos lugares para ItemId = 12345, El ItemName (peso de 25) y aparece dos veces en ItemLongDescription (Peso de 5 x2 = 10) la palabra "camisa" tendría un peso total de 35 para ItemId = 12345.

Si alguien busca "camisa rosa", busco en mi tabla todas las instancias de las palabras "Rosa" o "Camisa" y totalizo los pesos. Mostrando los artículos con el peso total más alto en la parte superior.

SQL:

Select Itemid, sum(weight) as totWeight from tblKeywords
group by itemId having keyword in ('pink','shirt')

Así que aquí lo tienes, un motor de búsqueda básico (y rápido). Por supuesto, hay más por hacer, como eliminar la puntuación, el código HTML y las palabras clave sin valor como "y", "if", "o". Esto no aborda la búsqueda de frases clave, pero puede usar un sistema similar para frases si puede averiguar dónde comienzan y terminan.

Imbéciles
fuente
Gracias buena respuesta. ¿Qué sugeriría también para agrupar productos? Me refiero a que tienes como 1 millón de páginas de productos rastreadas de diferentes sitios web. desea agrupar los mismos productos en diferentes sitios web: programmers.stackexchange.com/questions/134292/…
MonsterMMORPG
@Monster - ¿Qué hay de la combinación Fabricante \ SKU del artículo?
Imbéciles
También puede comprar (alquiler) estos datos de compañías como Etilize
Imbéciles
¿Puedes explicarlo un poco más porque no lo entendí? Gracias.
MonsterMMORPG
3
Una respuesta práctica "ok". Sin embargo, esto ignora todo el campo de estudio, también conocido como "Recuperación de información". En términos de "Señalar en la dirección correcta", IR habría sido mejor en mi mente.
Darknight
3

Los motores de búsqueda se basan en rastreadores web , tendrá que descubrir cómo construir uno de estos retoños antes de poder desarrollar un sitio web para mostrar sus resultados (necesitará una base de datos rápida y eficiente para acompañarlo).

palbakulich
fuente
3
Un motor de búsqueda puede consumir la salida de un rastreador web, pero de lo contrario tienen muy poco que ver entre sí. Además, es poco probable que una base de datos rápida y eficiente de la variedad SQL ayude mucho en este esfuerzo. Los motores de búsqueda generalmente se crean utilizando esquemas de indexación de archivos invertidos, que no se ajustan en absoluto al molde SQL.
Marcelo Cantos
@Marcelo Cantos: La indexación de archivos invertidos suena complicada: -0 - ¡Gracias por ayudar a aclarar mi respuesta!
palbakulich
2

Construyendo un motor de búsqueda

Este es un curso introductorio a CS que comenzará el día 20, le sugiero que lo revise, se ofrece de forma gratuita.

Mahmoud Hossam
fuente
1
Sebastian Thrun también está estrechamente asociado con Google.
James Youngman