FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Klarade millennium-buggen
|
Jag behöver en sökfunktion för produktsökning i en e-butik. I shoppen finns idag en väldigt enkel sökfunktion som bara letar efter det exakta sökordet i databasen och sen presenterar träffarna för användaren.
Jag letar både efter färdiga script, eller bara instruktioner för hur man bör definiera algoritmerna till en sökfunktion. Scriptet eller guiden får gärna kosta pengar, men det måste vara rimliga belopp. Användningsområdet är som sagt produktsökning i en webbshop. Om någon kan tipsa om script så bör det vara med öppen källkod eller där man på annat vis har möjlighet att tweaká sökresultaten efter eget önskemål. |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
Ere mysql bör du ta en titt på denna länk: Full-text search in Mysql
|
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Medlem
|
Exempel på exakt sökning;
$sql = "SELECT * FROM webbshop WHERE field_1 = '$search' "; Exempel på ett wildcard $sql = "SELECT * FROM webbshop WHERE field_1 LIKE '$search%' "; Har du direktaccess till koden kan du rätt enkelt ändra till wildcard (%)-tecken själv. Men glöm inte "LIKE" istället för "="-tecknet. Har du en stor databas bör du kolla upp dina indexeringar om du inför "LIKE". Som ett exempel kan jag nämna att vi har en kund som har ca 55 000 varor i webbshopen och wildcard både före och efter sökordet men man tror att han har 100 varor så snabbt går det. Tyvärr är nackdelen med indexeringar UPDATE & INSERT går lååångsamt men å andra sidan gör inte kunden det oftare än 2 ggr per år. |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Mycket flitig postare
|
Har MySQL ändrat något på sistone? Jag vet att innan så kunde MySQL inte använda index vid LIKE sökningar med % i början. Det är väl därför Full-Text sökning finns i MySQL.
|
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Medlem
|
Vilken motor tänkte du på? Vi kör med InnoDB. Så det var ju rätt så relevant information för Gustav alltså. Ändra från MyIsam till InnoDB alt kör med mysql.com (Wizkid's länk ovan) förslag.
Anledningen till att vi kör med InnoDB är att man kan låsa (LOCK) rader. Se gärna http://dev.mysql.com/doc/refman/4.1/...ock-modes.html men jag ser också att dom har skrivit en lång "låt bli" lista för att köra InnoDB. http://dev.mysql.com/doc/refman/4.1/...trictions.html Hursomhelst så visar empiriska testar att vi får prestandavinster med InnoDB, självklart vill MySql att man använder MyIsam helst men allt är igentligen bara kompromisser mellan olika saker. InnoDB: http://www.innodb.com/ & en benchmark (men testa själv också) http://www.innodb.com/innodb/benchmarks |
|||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Klarade millennium-buggen
|
Tack för svaren. Jag är inte själv programmerare, så mycket av det ni skriver är rena grekiskan för mig. Jag ska dock låta någon som kan titta på det
![]() Jag kanske uttryckte mig förmodligen lite oklart, men det är inte koden vi behöver hjälp med. Det är hur algoritmerna ska definieras för att ge bra och vettiga sökresultat. Dvs vad bör ge en träff och vad bör inte göra det. Exempel 1: Söker någon på batterier i shoppen så får man idag upp en hel drös irrelevanta träffar. Nästan alla produktbeskrivningar innehåller ordet batterier, eftersom beskrivningen anger vad man behöver för batterier till produkten. Det här skulle man t ex kunna lösa genom att sökmotorn gör ett urval och bara presenterar produkter från den produktkategorin där ordet batterier är vanligast förkommande. Resultatet skulle bli att man bara fick upp batterier och inte andra produkter. Exempel 2: Vissa böjningar av ord och eventuella felstavningar ger idag inte de träffarna som de ska göra. Lösningen kan t ex vara att om bokstavsföljden stämmer till 85 % så ger det ändå en träff. Exempel 3: Många ord har synonymer. Söker någon på en synonym så får personen inte upp några relevanta träffar. Lösningen skulle vara att man förser sökmotor med ett mindre synonymlexikon. Problemen är många och de flesta har jag förmodligen inte ens tänkt på i dagsläget, än mindre har jag några riktiga lösning. Det här var bara ett exempel. Jag sitter inte inne med lösningarna och det kan säkert vara ganska komplicerat bitvis, men det var därför som jag undrade om någon kände till en guide eller en redan befintlig kod som man kan modifiera ![]() |
|||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Har WN som tidsfördriv
|
På symfony-project.com finns en ganska bra guide som visar hur man kan bygga en simpel sökmotor. Där kan du säkert lära dig några tekniker för det du söker: Day 21
|
|||
![]() |
![]() |
![]() |
#8 | |||
|
||||
Klarade millennium-buggen
|
Citat:
|
|||
![]() |
![]() |
Svara |
|
|