FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Håller på och bygger en ny sökfunktion som ska gå mot en produkttabell i första hand.
Det jag har lite problem med är att modellnamnen kan innehålla bindestreck, mellanrum mm. När en besökare letar efter en produkt och skriver in tex "AA123" så vill jag ju självklart att det ska ge träff på det korrekta namnet "AA-123". Det enda sätt som jag kan komma på för att lyckas med ovanstående är att ange alternativa sökord själv på produkten, tex: "AA123", "AA 123" osv osv. Är det så "illa" eller finns det någon bättre lösning? Google gör ju onekligen ett bra jobb i ovanstående exempel men jag antar att de matchar mot sökningar som andra gjort eller liknande (berätta gärna hur de gör om du vet). |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Medlem
|
Nu vet jag inte om du kör mysql, men kanske soundex kan vara något att kika på? Jag har inte testat det själv ...
|
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Citat:
|
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
Testade även Metaphone för PHP men det ger samma resultat, dvs för många modeller får samma värde.
|
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Mycket flitig postare
|
Du kan inte ha ett fält för alternativa stavningar som sökningen matchar mot? Logga på samma gång statistik kring vad användarna söker på (men ej får några träffar) och modifiera listan med alternativa sökningar för hand med statistiken som stöd. Det lär säkert bli en hel del jobb till en början men jag misstänker ändå att de flesta skriver "samma fel" och att du därför ganska snabbt täcker in de flesta kombinationer.
|
|||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
Citat:
Har eventuellt en annan lösning som jag håller på och testar ![]() |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Flitig postare
|
Har produktnamnen ett system på namngivandet? dvs heter det alltid XX-YYY ? två eller tre bokstäver följt av bindestreck och sen siffror?
Isåfall borde du kunna iterera igenom produkterna och jämföra med ett regexp.. är inte helt bäst på det men nånting som.. ([a-z]{1,3})\-([0-9]{1,3}) dvs en bokstav 1-3 st följt av ett bindestreck och sen siffror, 1-3 st. eller något liknande regexp... MySQL har väl en operand som heter LIKE eller nått sånt där.. för sökningar.. men minns inte hur det funkar. värt att undersöka iaf ![]() |
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Medlem
|
Att skapa ett fält i databasen för varianter av varje produktnamn låter som en bra idé. Man kan ju skapa en mängd olika varianter av varje produktnamn per automatik genom att använda preg_replace() eller liknande och för varje produktnamn ersätta alla specialtecken med "ingenting" och/eller med mellanslag. Eller t.ex. byta ut alla "-" mot "," osv.
Man kan ju även på olika sätt skapa en array av de olika delarna i produktnamnet med explode() flytta om ordningsföljden med asort() och återskapa strängen i olika varianter och ordningsföljder. Bara fantasin sätter gränser ![]() |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Medlem
|
Skummat igenom tråden lite snabbt så kanske är fel ute... Men jag skulle skapa ett inverterat index där jag strippar bort alla specialtecken i produkterna, alltså XX-YYY sparas som XXYYY och sen köra samma strippning av sökningarna som görs.
|
||
![]() |
![]() |
![]() |
#10 | |||
|
||||
Mycket flitig postare
|
Google bygger upp sin rättstavningsdatabas genom att analysera vilka frågor som användare skickar in direkt efter en tidigare fråga, utan att ha klickat på någon länk. Självklart finns det massor med variabler som kontrolleras för, men det är så grundtanken är. Tyvärr betyder det ju att om du inte har trafik i Googlestorlek så måste du ordna detta på något annat sätt
![]() |
|||
![]() |
![]() |
Svara |
|
|