webForumDet fria alternativet

Sökfunktion

12 svar · 487 visningar · startad av Pedda

PeddaMedlem sedan juni 20004 880 inlägg
#1

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.

monAmourMedlem sedan dec. 2002270 inlägg
#2

SELECT * FROM dbTabell WHERE field1 LIKE '%SEARCHWORD%' OR field2 LIKE '%SEARCHWORD%' ORDER BY id

Patrik81Medlem sedan okt. 2001537 inlägg
#3

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

PeddaMedlem sedan juni 20004 880 inlägg
#4

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!

Patrik81Medlem sedan okt. 2001537 inlägg
#5

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

PeddaMedlem sedan juni 20004 880 inlägg
#6

Tackar, ska läsa på en gång. :bire

nicclasMedlem sedan feb. 20001 061 inlägg
#7

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!

PeddaMedlem sedan juni 20004 880 inlägg
#8

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?

PeddaMedlem sedan juni 20004 880 inlägg
#9

Ingen som har några bra förslag, länkar el. dylikt? :q

Patrik81's länk gav mig inte mycket tyvärr.

nicclasMedlem sedan feb. 20001 061 inlägg
#10

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.

PeddaMedlem sedan juni 20004 880 inlägg
#11

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.

nicclasMedlem sedan feb. 20001 061 inlägg
#12

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.

mozillaMedlem sedan juli 20011 202 inlägg
#13

/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?

Genererad på 373 ms · cache AV · v20260730165559-full.f96bc7eb