Escribí esto para un blog que solía tener hace mucho tiempo … ya no está en la web, así que … ¡aquí está! :
Cómo escribir un motor de búsqueda
Darren Rowse de probolgger.net está llevando a cabo un Proyecto de Escritura en Grupo sobre cualquier «Cómo». Este es uno de los pocos blogs que leo con regularidad, así que me imagino por qué no escribir algo que valga la pena leer para variar, en lugar de mi perorata violenta estándar en la que 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:
- No hay mucha información buena sobre esto en la web.
- Actualmente estoy escribiendo uno para uno de mis clientes.
Mi cliente es un minorista en línea de tamaño significativo, por lo que no busco en toda la web solo en su sitio, más específicamente en el productos a la venta en su sitio. No obstante, se pueden utilizar las mismas técnicas para escribir una más compleja que se utiliza para buscar en Internet. Sé que este no es un blog de tecnología, así que no profundizaré en los tecnicismos, ni hablaré de los requisitos de potencia de procesamiento de hardware o rastreo web.
Estoy usando una técnica bastante simple , Tengo una tabla (tblKeywords) con tres campos:
- Itemid (si está haciendo una búsqueda web, esta sería la URL)
- KeyWord (palabra clave indexada)
- Peso (este es un valor numérico del 1 al 100, cuanto mayor sea este número, más significativo (peso) tiene 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, Fabricante, 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 de otras páginas que enlazan con la página que se indexa.
El valor de peso se determina según el origen de la palabra clave. . Por ejemplo, en mi caso, el SKU del artículo «s Manufacture» 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 ItemLongDescription puede obtener un peso de 5. Si está indexando páginas web, las palabras del título de la página pueden 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 peso por cada vez que ocurre. Por ejemplo, si la palabra «Camisa» proviene de dos lugares para ItemId = 12345, The 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 el total de pesos. Mostrando los elementos con mayor peso total 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 básico (y rápido) buscador. Por supuesto, hay más cosas que hacer, como eliminar la puntuación, el código HTML y palabras clave sin valor como «y», «si», «o». Esto no se refiere a la búsqueda de frases clave, pero puede utilizar un sistema similar para las frases si puede averiguar dónde comienzan y dónde terminan.
Comentarios