Modul de cautare produse pe un site cu peste 30k produse


(Catalin Maftei) #1

salut,

imi doresc sa dezvolt un nou motor de cautare produse in farmaciatei&bebetei care sa pastreze simplitatea si viteza actuala insa sa adauge sugestiile mai ales la denumirile produselor unele destul de greu si de pronuntat …

impreuna cu colegii mei am inceput sa analizam functionalitatile si beneficiile pe care le putem aduce utilizatorilor, sa ajutam procesul de cautare (informare&comanda) mai ales pe mobile.

vreau sa va intreb ce ati alege voi:
sa luati un modul ready-made dezvoltat de alte firme? sau sa dezvoltati singuri?


(István F.) #2

Mai mult problema e baza de date. Fuzzy finding se face cu soundex, sau levenshtein distance si de exemplu cu mysql o sa ai o cautare cu 50 de like-uri/query de cautare. Soundex probabil ar merge decent cu 30k produse, doar ca nu e pentru limba romana.

Modul ready-made e mult spus, daca de exemplu vreti sa folositi elasticsearch trebuie sa adaugati crud pentru elasticsearch in aplicatia existenta mereu cand se efectueaza un query in baza de date principala care schimba datele relevante pentru cautare. (sau sa le sincronizati la anumite perioade)

Elasticsearch n-as zice ca e complicat daca il inteleg si eu, dar mananca memorie. O data ce ati facut legarea bazei de date existente cu elasticsearch o sa aveti un api rest pentru cautare in care precizati sa fie cautare fuzzy la request si va returna toate variantele gasite dupa cuvant la o anumita distanta de cuvantul original.


(Catalin Maftei) #3

salut,
da acum asa folosim crud => elasticksearch cu levenshtein


(Andrei Avram) #4

30k e un număr mic, nu trebuie să impună probleme. Nici 100k. Și nu ocupă exagerat de multă memorie într-un context optim.

Recomand ceva existent, fie self hosted (ca elastic search), fie Algolia (https://www.algolia.com/pricing - daca un abonament lunar nu e o problemă, serviciul e ireproșabil tehnic și ca support).

Eu aș merge pe o soluție custom doar daca business-ul mi-ar permite sa investesc în mentenanța soluției.


(adrian) #5

30k nu e cine stie ce. n-ati zis in ce environement.

ca sa nu reinventez roata, as merge pe elasticsearch.

@msd cum functioneaza serviciile astea gen algolia? ce te faci cu timpul de la initierea requestului pana la citirea raspunsului? cine sta secunde sa afle rezultatele la un search?


(Andrei Avram) #6

Algolia, 5M records, in productie, 99.9% SLA (10x refund). Eu is foarte multumit de 2 ani incoace.


(adrian) #7

ala e query-ul efectiv? nu ma indoiesc de asta, problema mea e cu transportul requestului si raspunsului, ca nu-s in aceeasi retea.


(Andrei Avram) #8

Request-urile se fac direct spre ei, prin sdk. Avem cateva intermediate de api-ul nostru, insa niciodata nu am intalnit vreo situatie neplacuta nici in cazul asta.

De-acord, ca idee, nu-i ideal sa depinzi 100% de un 3rd party. Pot sa vorbesc doar de experienta mea cu ei in 2 ani, in care nu a existat nici macar o problema.


(Catalin Maftei) #9

Salut Andrei,

thx pt. feedback

si noi am ales sa mergem pe o solutie proprietara.
nice performantele de la Algolia


(Opencart Romania) #10

Salutare!

Sphinxsearch?? am lucrat cu el si mi se pare foarte rapid… pe un ssd … foloseste fisere proprii indexate …

Spor


(István F.) #11

Nu are acelasi suport si nici acelasi stack ca si Elasticsearch, adica stack-ul ELK consta din Elasticsearch, Logstash si Kibana, ceea ce iti oferta mult mai multa putere decat doar sphinx de exemplu.