Någon som har en länk där man kan läsa om hur man gör en sökfunktion mot MySQL?
Ska söka igenom olika fält i olika tabeller efter ett eller flera ord.
Sökfunktion
12 svar · 487 visningar · startad av Pedda
SELECT * FROM dbTabell WHERE field1 LIKE '%SEARCHWORD%' OR field2 LIKE '%SEARCHWORD%' ORDER BY id
Här hittar du väl tre artiklar som kanske kan ge några idéer, all kod måste säkert skrivas om och förbättras, men som sagt, lite uppslag och idéer kan säkert födas här
MVH Patrik
monAmour
Så långt har jag redan kommit, det jag är ute efter är att kunna söka mer avancerat.
t.ex skriva två ord - sen söker efter orden i olika tabeller efter ställen där det ena eller båda förekommer.
Patrik81
Tror du glömde något (länkarna) ;)
Vill gärna läsa artiklarna!
Väldigt ledsen, har varit en alltför lång dag på jobbet ;)
Här kommer adressen:
http://www.phpbuilder.com/columns/index.php3?cat=4&subcat=31
MVH Patrik
Tackar, ska läsa på en gång. :bire
Hej,
Vilken MySQL version har du? I MySQL 4 (och uppåt) kan man göra avancerade sökningar "direkt" i fält som är indexerade som "FULLTEXT". En tutorial finns tex på: http://www.databasejournal.com/features/mysql/article.php/1578331 FULLTEXT-funktionen i MySQL fungerar, rent tekniskt (dvs. gör samma typ av beräkningar), som vilken sökmotor på webben som helst för att finna matchande resultat.
Jag har provat detta på ganska stora datamängder. Det fungerar mycket bra så länge datamängden är relativt liten (säg minde än 20MB). Tabeller med fält som är indexerade med "FULLTEXT" blir fort ganska stora (lätt typ 3-4 ggr större än utan FULLTEXT).
Använder du inte MySQL 4 så blir det lite sämre stöd för avancerade sökningar, men "enkla" FULLTEXT sökningar funkar även där bra!
Jag har version 3.23.47
Endast ett fält är fulltext, inte de andra
Kan det vara en bra lösning att göra explode på sökorden innan sökningen? Kanske inte är någon bra lösning?
Ingen som har några bra förslag, länkar el. dylikt? :q
Patrik81's länk gav mig inte mycket tyvärr.
Ledsen att jag inte "fullföljde" mitt svar. Har tyvärr ingen erfarenhet av avancerad sökning i flera tabeller.
I princip blir det väl som monAmour skrev ovan, det finns väl inte så många fler möjligheter. Om du beskriver lite noggrannare vad du menar med "söka igenom olika fält i olika tabeller efter ett eller flera ord" så kan kanske någon annan kan hjälpa till med lite mer detaljer.
Ok, ska försöka vara tydligare. :)
Om man fyller i t.ex orden 'Hej hopp' i sökrutan och använder satsen som monAmour föreslog så söker den ju efter hela frasen, inte efter enbart 'Hej' och 'hopp'.
Detta gör ju att om det finns en fras 'Hej då' i databasen, så listas inte denna.
Har funderingar på att lösa det med explode som jag skrev innan, men har inte hunnit titta på det ännu, det kanske finns något bättre sätt.
föreslog så söker den ju efter hela frasen, inte efter enbart 'Hej' och 'hopp'.
Även om du har indexerat fältet som FULLTEXT? Då borde flera returneras även om de får en låg "score".
Vill du inte använda FULLTEXT, eller inte kan, så ja, då måste du ju "explodera" strängen först innan du kan använda en SQL-sats liknande den i monAmours exempel.
/r okej, efter mycket intressant läsning på länken så har jag några funderingar? Hur mycket sämre prestanda mässigt blir det?(blir det de?). Jag tänker då både på databasen storlek och när man sedan(vi säger att vi har ett forum med fulltext på topic/innehåll) visar trådarna och läser inläggen. Påverkas prestandan något negativt/blir sidan segare? Någon som är lite mer insatt?