Avatar billede thorus Nybegynder
27. august 2004 - 02:41 Der er 6 kommentarer og
1 løsning

Boolean søgning

Jeg har en mySQL database med en masse tabeller og en af dem har en masse indhold hvor jeg gerne vil søge i en af felterne som hedder.

dele (TEXT FELT)

Min søgning går ud fra at brugeren har et par felter hvor man kan skriv eks. "motor" i felt 1 og i felt 2 "tandhjul"

så skal søgningen komme med alle rækker som har "motor" & "tandhjul" i feltet dele.

når jeg bruger boolean

$kriterie = "SELECT * FROM produkt WHERE MATCH (dele) AGAINST ('+$del1 +$del2 IN BOOLEAN MODE)";

så kommer den ikke med et rigtigt resultat eller den overser dele2.

jeg køre MySQL 4.0.18, PHP, apache, SUSE.
Avatar billede kasper.h Nybegynder
27. august 2004 - 06:58 #1
Jeg forstår ikke helt, har du 1 eller 2 felter? Hvis du kun har 1 felt der hedder 'dele', kan du skrive
SELECT * FROM produkt WHERE dele = 'tandhjul' OR dele = 'motor'
Hvis du har 2 felter (f.eks dele1 og dele2), hvor der skal stå motor i det ene og tandhjul i det andet, kan du skrive
SELECT * FROM produkt WHERE dele1 = 'tandhjul' AND dele2 = 'motor'
Avatar billede fennec Nybegynder
27. august 2004 - 08:27 #2
Du har ikke afsluttet din tekst som skal bruges i MATCH.

$kriterie = "SELECT * FROM produkt WHERE MATCH (dele) AGAINST ('+$del1 +$del2' IN BOOLEAN MODE)";
Avatar billede thorus Nybegynder
27. august 2004 - 12:58 #3
att: fennec

i mit script har jeg huskede ' glemte bare at skrive den her på exp.dk

jeg har 1 felt som hedder "dele" men i feltet "dele" er der en masse tekst så jeg kan ikke bruge dele = 'tandhjul' for så leder den kun efter de rækker som kun har "tandhjul" i sig.
Avatar billede thorus Nybegynder
27. august 2004 - 13:17 #4
Kan jeg bruge andet end Boolean search? et link til en artikel ville være sagen
Avatar billede fennec Nybegynder
30. august 2004 - 08:36 #5
Så skal du selv til at splitte teksten op.

Kan du få det til at virke, hvis du ikke bruger php-variabler???

$kriterie = "SELECT * FROM produkt WHERE MATCH (dele) AGAINST ('+motor +tandhjul' IN BOOLEAN MODE)";

ps. Husk ved + skal orderet være til stede. I dette tilfælde burde du kun få de resultater hvor både "motor" og "tandhjul" er i teksten.
Avatar billede majkat Nybegynder
30. august 2004 - 16:34 #6
Har du en ordentlig mængde test data? MySQL vil ignorere ord der forekommer i mere end en hvis %-del af rækkerne.
Avatar billede majkat Nybegynder
13. oktober 2004 - 08:04 #7
Kan vi lukke?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester