login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Zoekmachine ontwerpen (intern) (Opgelost)

Offline GroundZero - 24/11/2016 09:03 (laatste wijziging 24/11/2016 09:03)
Avatar van GroundZeroLid Beste,

wij willen graag een goede zoekmachine ontwikkelen voor onze website waarmee gebruikers kunnen zoeken (en real-time suggesties krijgen). Echter is dit natuurlijk niet zo makkelijk, een simpel voorbeeld:

"rode jongens t-shirt Diesel"

Je verwacht dat alleen rode t-shirts van het merk Diesel te krijgen. Echter zou je omdat het woord "t-shirt" er in voorkomt bij ons nu momenteel gewoon elk merk zien omdat elk product in zijn omschrijving het woord "t-shirt" heeft staan.

Niet de bedoeling dus! zo zijn er erg veel dingen waar je rekening mee moet houden tijdens het ontwikkelen van een zoekmachine.

Is hier iemand die veel ervaring heeft met zoekmachine ontwikkeling of die een goede handleiding weet waar uitgelegd word (globaal, het is voor elke website verschillend) waar rekening mee te houden en hou te programmeren?

Ik kan het ook allemaal zelf wel bedenken natuurlijk, maar het zou mooi zijn als er wat informatie te halen valt van mensen die er al ervaring in hebben 

Zou er een goed boek bestaan hier over, waar je zelf ervaring mee hebt, dan hoor ik dat ook graag natuurlijk!

9 antwoorden

Gesponsorde links
Offline Thomas - 24/11/2016 10:51
Avatar van Thomas Moderator Over wat voor een website hebben we het? Betreft dit een webshop?
Betreft dit een standaard pakket of is dit alles custom code?
Met wat voor doel zoek je? Voorraad? Verkoop? Prijsvergelijking?

Afhankelijk van welke data (mate van detail) je van de items hebt en welk pakket je gebruikt bepaalt mede welke mogelijkheden (of beperkingen) je hebt.

Daarnaast zal de manier waarop je zoekt ook voor een groot deel afhangen van hoe deze data (hiërarchish) is gestructureerd...

Misschien kun je dit vraagstuk beter omdraaien? Vraag je af hoe je zou willen zoeken, en zoek daar dan technische implementaties / best practise oplossingen bij. Nu begin je bij het eind "geef mij allerlei manieren om te zoeken" terwijl deze mogelijk helemaal niet toegespitst hoeven te zijn op jouw situatie :/.
Offline GroundZero - 24/11/2016 11:57 (laatste wijziging 24/11/2016 11:58)
Avatar van GroundZero Lid Duidelijk verhaal, heb je ook wel gelijk in ter informatie:

Het gaat over een webshop. We hebben maar dan 500.000 artikelen (ook dingen die niet meer verkocht / besteld kunnen worden staan er nog in, database optimalisatie komt er aan maar voor nu dus een hele grote database).

Data is veel aanwezig, merk, grootte, vorm, type, kleur, prijs, voorraad, fotos, materiaal en zo voort... echt alles is aanwezig en waarop iemand eventueel zou kunnen zoeken qua sleutelwoorden, dat is aanwezig.

Tot in detail is eigenlijk alles aanwezig dus. Wat voor ons belangrijker is, en als voorbeeld pak ik een willekeurige branche (horloges in dit voorbeeld) is het volgende:

Ik zoek een Rood horloge van het merk Diesel. Ik wil een metalen band en geen ander materiaal.

"rood diesel horloge met metalen band".

Mijn zoekresultaten zullen nu alle kanten op zoeken omdat:

1. Het woord rood komt voor, er zijn duizenden horloges (van andere merken) die rood zijn
2. Het woord horloge komt in bijna elke omschrijving van een individueel product voor
3. Het woord metaal komt ook vaak voor bij horloges met metalen band (ongeacht merk)
4. Net als bij punt 3, geld dit ook voor punt 4 met het woord "(horloge)band".

De bezoeker krijgt dus bijvoorbeeld, 600 resultaten terug die relatief kloppen, maar niet 100% accuraat zijn omdat er ook andere merken getoond worden, en horloges die niet rood zijn maar wel een metalen band hebben, en visa versa.

Het "ideaal" zou zijn dat we dit soort dingen kunnen herkennen en kunnen zeggen

"Hé, hij wilt een ROOD HORLOGE van het merk DIESEL met een METALEN BAND".

En vervolgens krijgt de bezoeker alleen horloges van het merk diesel in de kleur rood met een metalen band te zien.

Echter wanneer iemand zoekt op "Rood horloge" dan zou hij alle horloges in de kleur rood moeten zien ongeacht het merk of andere specificaties. Het zelfde geld voor een zoekopdracht naar "blauw horlogebandje" of "blauw horloge bandje" dus met een spatie tussen de woorden.

Het voornaamste probleem is dus eigenlijk, hoe kan je al deze dingen op een efficiënte manier ondervangen.

Mensen gebruiken verschillende benamingen, een voorbeeld:

1. Horlogebandje
2. Horloge bandje
3. Horloge strap
4. Strap

dat samen met de mogelijke zoek combinaties. Ik begrijp, je kan nooit alles ondervangen, aangezien mensen ook spelfouten kunnen maken of idioot rare zoekopdrachten kunnen invullen, maar de wens is wel om het zo accuraat mogelijk te kunnen maken met oog op snelheid.

Snelheid.
Zoeken door 500k producten is een bagger werk natuurlijk, zeker als je ook suggesties (incl. foto's) wilt weergeven. Wat zou hierbij een goed advies zijn?

Een 2e database maken die nachts gesynct word en waarin alleen producten staan die daadwerkelijk op voorraad zijn bijvoorbeeld met een index op veld X en veld Y om het zo maar domweg uit te leggen?

Deze twee vragen zijn eigenlijk het belangrijkste voor ons 

Ik hoop dat je zo een beter inzicht hebt in wat we graag willen bereiken en de informatie die beschikbaar is.

Betreft de indeling van de database:
één tabel voor merken
één tabel voor het product
één tabel voor de voorraden en voorraad locatie (FiFo)

verder hebben we voor sommige informatie zoals kleur, vorm, uurwerk, batterij en dat soort dingen ook een koppeltabel zodat niet alle informatie in één tabel staat.

Deze worden met joins gelinkt momenteel waar nodig om de informatie op te halen.

De belangrijkste informatie, waar 95% van de tijd op gezocht word, staat in elk geval in één en dezelfde tabel. Echter wel met (inmiddels) iets van meer dan een miljoen rows, dus daar moeten we nog een database optimalisatie voor doen en eventueel splitsen zoals ik al zij in twee databases misschien.
Offline Thomas - 24/11/2016 13:54
Avatar van Thomas Moderator Dit is dus custom made en niet een pakket zoals Magento of wat dan ook?
Offline GroundZero - 24/11/2016 14:03
Avatar van GroundZero Lid Correct, het is echt custom made. We hebben het al meer dan 10 jaar meen ik, alles is wel up-to-date HTML5 / PHP7 maar echt 100% custom. Ook geen framewerk of zo (front-end althans niet) 
Offline Maarten - 27/11/2016 16:33
Avatar van Maarten Erelid Kijk eens naar Apache Solr. Kan je vermoedelijk wel iets mee.
Bedankt door: GroundZero
Offline GroundZero - 28/11/2016 09:06
Avatar van GroundZero Lid Thanks Maarten ik ga eens kijken!
Offline marten - 02/12/2016 09:38
Avatar van marten Beheerder Wij gebruiken SOLR en ElasticSearch
Bedankt door: GroundZero
Offline GroundZero - 02/12/2016 15:04
Avatar van GroundZero Lid Top hiermee kan ik denk ik wel vooruit, waarom het wiel opnieuw uitvinden toch 
Dank voor je antwoorden!
Offline Thomas - 05/12/2016 15:50
Avatar van Thomas Moderator Goed, nu de specifieke stukken gereedschap zijn verzameld kun je je volledig gaan wijden aan de klus zelf. Nu maar hopen dat je het juiste gereedschap hebt geselecteerd.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2020 Sitemasters.be - Regels - Laadtijd: 0.247s