PDA

Bekijk Volledige Versie : (my)sql: search over meerdere kolommen



Jaap-Andre de Hoop
29/01/04, 09:25
Ik wil over meerdere kolommen in mijn database zoeken, momenteel gebruik ik:
select id from table where concat (veld1, veld2, veld3) like '%searchstring%'

maar heeft nadelen,
-als begin van searchstring in veld 1 en eind in veld 2 geeft dit ook een hit,
terwijl je dat misschien niet wilt (is natuurlijk op te lossen met slimme
scheidingstekens).
-kan vrij intensief worden bij grote tabellen???

in de mysql manual kwam ik de match ... against ... tegen,
http://www.mysql.com/doc/en/Fulltext_Search.html

daarvoor moet je in je database aangeven tegen welke kolommen gezocht moet
worden, maar:
-alleen myisam
-een fulltekst per tabel
-alleen mysql??

Iemand een slimme oplossing (zonder telkens met or te werken), combinatie van
like en in (heb ik niet werkend gekregen)?

Ben benieuwd naar reacties.

Jaap-Andre

Michiel de Roo
29/01/04, 10:35
Jaap-Andre de Hoop wrote:
> Ik wil over meerdere kolommen in mijn database zoeken, momenteel gebruik ik:
> select id from table where concat (veld1, veld2, veld3) like '%searchstring%'
>
> maar heeft nadelen,
> -als begin van searchstring in veld 1 en eind in veld 2 geeft dit ook een hit,
> terwijl je dat misschien niet wilt (is natuurlijk op te lossen met slimme
> scheidingstekens).
> -kan vrij intensief worden bij grote tabellen???
>
> in de mysql manual kwam ik de match ... against ... tegen,
> http://www.mysql.com/doc/en/Fulltext_Search.html
>
> daarvoor moet je in je database aangeven tegen welke kolommen gezocht moet
> worden, maar:
> -alleen myisam
> -een fulltekst per tabel
> -alleen mysql??
>
> Iemand een slimme oplossing (zonder telkens met or te werken), combinatie van
> like en in (heb ik niet werkend gekregen)?
>
> Ben benieuwd naar reacties.
>
> Jaap-Andre

select id from table where veld1 like '%searchstring%' or veld2 like
'%searchstring%' or veld3 like '%searchstring%'

Michiel.

Jaap-Andre de Hoop
29/01/04, 11:45
In article <4018d1a2$0$314$e4fe514c@news.xs4all.nl>, Michiel de Roo <michiel@mderooPUNTNL> wrote:
>> Iemand een slimme oplossing (zonder telkens met or te werken)
>
>select id from table where veld1 like '%searchstring%' or veld2 like
>'%searchstring%' or veld3 like '%searchstring%'

dat vind ik dus niet echt een mooie oplossing (maar is wrs wel de beste :-( )

Jaap-Andre

uws
29/01/04, 11:55
I <4018e3b1$0$122$e4fe514c@dreader11.news.xs4all.nl>, Jaap-Andre de Hoop skrev:
> In article <4018d1a2$0$314$e4fe514c@news.xs4all.nl>, Michiel de Roo <michiel@mderooPUNTNL> wrote:
>>> Iemand een slimme oplossing (zonder telkens met or te werken)
>>select id from table where veld1 like '%searchstring%' or veld2 like
>>'%searchstring%' or veld3 like '%searchstring%'
> dat vind ik dus niet echt een mooie oplossing (maar is wrs wel de beste :-( )

Je kunt echter zulke queries prima door een script laten genereren.

dag, Wouter

--
:wq mail uws@xs4all.nl

but a prophet did once say :: honesty's a lonely word -- incubus

Michiel de Roo
29/01/04, 12:25
Jaap-Andre de Hoop wrote:
> In article <4018d1a2$0$314$e4fe514c@news.xs4all.nl>, Michiel de Roo <michiel@mderooPUNTNL> wrote:
>
>>>Iemand een slimme oplossing (zonder telkens met or te werken)
>>
>>select id from table where veld1 like '%searchstring%' or veld2 like
>>'%searchstring%' or veld3 like '%searchstring%'
>
>
> dat vind ik dus niet echt een mooie oplossing (maar is wrs wel de beste :-( )
>
> Jaap-Andre

misschien moet je je syntax highlighting aanzetten, dat scheelt een stuk
:-) . Maar, ik had je opmerking over or even gemist.

Ik vind jouw oplossing met concat eigenlijk een stuk minder 'mooi'. Je
gaat dan elke keer voor de hele database die tekstvelden aan elkaar
plakken, met als enige doel dat je query er 'mooier' uitziet. Dan kan wel
zijn, maar je server is zo estetisch niet, die wordt veel blijer van een
efficiente query. En dat is er zeer zeker eentje zonder concat.

Michiel.

Jaap-Andre de Hoop
30/01/04, 09:35
In article <im-a-msgid-virus-20040129-105238@uwsworld.xs4all.nl>, uws <uws@xs4all.invalid> wrote:
>I <4018e3b1$0$122$e4fe514c@dreader11.news.xs4all.nl>, Jaap-Andre de Hoop skrev:
>> In article <4018d1a2$0$314$e4fe514c@news.xs4all.nl>, Michiel de Roo
> <michiel@mderooPUNTNL> wrote:
>>>> Iemand een slimme oplossing (zonder telkens met or te werken)
>>>select id from table where veld1 like '%searchstring%' or veld2 like
>>>'%searchstring%' or veld3 like '%searchstring%'
>> dat vind ik dus niet echt een mooie oplossing (maar is wrs wel de beste :-( )
>
>Je kunt echter zulke queries prima door een script laten genereren.

Ik weet, moet je alleen checken of het de eerste is (of checken of het de
laatste is), hoopte eigenlijk dat daar een sql oplossing voor was.

Jaap-Andre

Jaap-Andre de Hoop
30/01/04, 09:45
In article <4018ebd8$0$318$e4fe514c@news.xs4all.nl>, Michiel de Roo <michiel@mderooPUNTNL> wrote:
>Jaap-Andre de Hoop wrote:
>> In article <4018d1a2$0$314$e4fe514c@news.xs4all.nl>, Michiel de Roo
> <michiel@mderooPUNTNL> wrote:
>>
>>>>Iemand een slimme oplossing (zonder telkens met or te werken)
>>>
>>>select id from table where veld1 like '%searchstring%' or veld2 like
>>>'%searchstring%' or veld3 like '%searchstring%'
>>
>>
>> dat vind ik dus niet echt een mooie oplossing (maar is wrs wel de beste :-( )
>>
>> Jaap-Andre
>
>misschien moet je je syntax highlighting aanzetten, dat scheelt een stuk

kan dat ook met pico ;-) Ikzelf wordt altijd een beetje gallisch van al die
kleurtjes, moet ik soms wat beter zoeken, maar ach, heb ik er wel voor over.


>Ik vind jouw oplossing met concat eigenlijk een stuk minder 'mooi'. Je
>gaat dan elke keer voor de hele database die tekstvelden aan elkaar
>plakken, met als enige doel dat je query er 'mooier' uitziet. Dan kan wel
>zijn, maar je server is zo estetisch niet, die wordt veel blijer van een
>efficiente query. En dat is er zeer zeker eentje zonder concat.

Ik vind hem zelf ook niet zo mooi voor de database, momenteel laat ik hem wel
lekker staan, omdat de tabel toch niet groot (500 rijen) gaat worden en de
query slechts sporadisch (20 keer dag??) uitgevoerd gaat worden. Ik had alleen
gehoopt dat er een mooiere oplossing was....

Die Fulltext zie ik op zich ook wel zitten, maar dat het alleen bij
myisamtabellen kan... Iemand idee of dat ook uitgebreid gaat worden?


Jaap-Andre

Michiel de Roo
30/01/04, 13:55
>>misschien moet je je syntax highlighting aanzetten, dat scheelt een stuk
>
>
> kan dat ook met pico ;-) Ikzelf wordt altijd een beetje gallisch van al die
> kleurtjes, moet ik soms wat beter zoeken, maar ach, heb ik er wel voor over.

Pico ken ik niet zo, maar het kan wel met vim :-)
:syntax on