arreglado buscador y similaridad

12 views
Skip to first unread message

Martín Gaitán

unread,
Sep 30, 2016, 11:31:33 PM9/30/16
to preciosa-devs
Ayer (y el miercoles? no recuerdo) estuve trabajando en arreglar el "buscador" y la lista de "productos similares".

El algoritmo del buscador es bastante sencillo. 

- Cada producto tiene un campo "busqueda", una denormalizacion que concatena y transforma (quita acentos, pasa a minuscula, etc.) otros campos como la descripcion, marca, etc. 
- para la busqueda q, se normaliza con la misma funciona
- si q es numerico, intenta matchear el codigo de barras del producto
- si no es numerico, hace dos cosas:
   - tokeniza en palabras (descartando las que sean demasiado cortas) y busca los productos que incluyan esas palabras en el campo busque
   - busca por "distancia trigram" [1], usando una extension de postgresql llamada pg_trgm

Esta misma funcion se usa para obtener "productos similares" que se hay al pie de un producto en la pagina de detalles, donde por ejemplo "salsa de tomate cica" seguramente aparece "salsa de tomate arcor". 

En la implementacion original usaba una app [2] que utilizaba esta extension, que forkeamos para intentar mejorar la API, pero estaba totalmente buggy. 

Por suerte en django 1.10, trigram y algunas otras funcionalidad propias de Postgresql están incorporadas builtin [3], asi que actualicé a 1.10 (teniendo que actualizar tambien algunas dependencias más) y esta funcionalidad volvio a estar presente. 

Como también estaba roto el javascript del "autocompleter", lo reemplacé por la lib oficial de twitter que sirve para eso (typeahead.js). En [4] pueden ver todos estos cambios: funciona  pero **SE VE HORRIBLE**

¿quien se da maña con CSS y un poquito de js?


Reply all
Reply to author
Forward
0 new messages