[MySQL] Relevantie van zoekresultaten instellen

Pagina: 1
Acties:

  • Hoicks
  • Registratie: Maart 2001
  • Laatst online: 17:40
Ik ben bezig een zoekmachine te maken die door een tabel heenzoekt op een woord dat je ingeeft.

Als ik als zoekwoord ' KET ' intik dan wil ik graag de losse woorden met ' KET ' erin bovenaan hebben staan.

Onderaan komen dan de minder relevante woorden zoals ' KETting ', 'KETen,' enz te staan.

Da's iig de bedoeling...

Nu is het zo het geval dat tie order by name doet waardoor alles op alfabetische volgorde gerangschikt wordt.

Weet iemand een manier waarop je met substrings o.i.d. een soort relavantie in kan bouwen in php? Of weet iemand een manier waarop dit goed te doen is?

Thanx in advance!

  • whoami
  • Registratie: December 2000
  • Laatst online: 19:37
eerst een select doen die alle records gaat gaan ophalen waar het woord 'KET' in staat als woord (dus niet als substring)
en dan een select doen die zoekt op substring. En daar doe je dan een union van.

zoiets:
code:
1
2
3
4
select 1, * from table where bla = arg
union
select 2, * from table where bla like %arg%
order by 1

https://fgheysels.github.io/


  • Femme
  • Registratie: Juni 1999
  • Laatst online: 19:11

Femme

Hardwareconnaisseur

Official Jony Ive fan

MySQL ondersteunt UNION pas sinds 4.0.1 dus daar heeft Hoicks waarschijnlijk weinig aan.

Je zou ook kunnen proberen om de mysql fulltext search te gebruiken. Die kan rangschikken op relevantie (maar niet precies zoals jij dat hierboven wilt).

  • whoami
  • Registratie: December 2000
  • Laatst online: 19:37
Achja, da's waar ook. Ik wil hier niet gaan flamen, maar kun je MySQL dan eigenlijk wel als een echt, degelijk en goed DBMS gaan beschouwen? Geen UNION, geen subquery, ...

Je kan m'n oplossing natuurlijk nog altijd gebruiken, ook zonder union. Je doet dan gewoon 2 afzonderlijke queries en toont de resultaten dan achter elkaar.

't valt me nu wel net te binnen dat de rijen die 'KET' als volledig woord wel 2x gaan teruggegeven worden. Eenmaal door de eerste query, maar ook door de query die de LIKE gebruikt. Dit zul je dus ook best omzeilen.

https://fgheysels.github.io/


  • Hoicks
  • Registratie: Maart 2001
  • Laatst online: 17:40
Poeh dit gaat dus niet makkelijk worden..

Dan maar 2 queries en dan zorgen dat ' KET ' als los woord bij de 2e query niet meer weergegeven mag worden.

Verwijderd

dat los je dan toch gewoon zo op:
code:
1
2
3
4
select 1, * from table where bla = 'arg'
union
select 2, * from table where bla like %arg% and bla <> 'arg'
order by 1

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op vrijdag 08 maart 2002 07:55 schreef KoekenBoes het volgende:
dat los je dan toch gewoon zo op:
code:
1
2
3
4
select 1, * from table where bla = 'arg'
union
select 2, * from table where bla like %arg% and bla <> 'arg'
order by 1
je kan ook niet lezen :?

Klaar voor een nieuwe uitdaging.


  • Grum
  • Registratie: Juni 2001
  • Niet online
Weinig mensen kunnen hier lezen .. er staat toch overduidelijk MySQL in et topic.

Altijd leuk dat mensen antwoorden geven en dan niet even de tijd nemen om ze te controleren (of dat er niet bijzetten).

Het is namelijk behoorlijk common knowledge dat mysql geen unions of subqueries ondersteunt in de non-alpha 3.X versie.

En vervolgens komt der weer een reactie van 'Nee dat kan mysql niet' en vervolgens hebben we 50% kans dat iemand z'n postcount met 1 kan ophogen met een lichte flame over mysql over of het wel een echte DBMS is etc etc.

:z - Werk - :+

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Zal ik maar eens een hint geven dan:
http://www.mysql.com/doc/F/u/Fulltext_Search.html
Volgens mij doet dit precies wat jij wil en

ja het is gewoon te vinden om de site van MySQL, even zoeken!

  • Hoicks
  • Registratie: Maart 2001
  • Laatst online: 17:40
Mijn provider draait: MySQL 3.22.27-log running on *.infopact.nl

In de laatste link die mij hier gegeven werd staat:

Since Version 3.23.23, MySQL has support for full-text indexing and searching.

Dus hier kan ik waarschijnlijk (nog) niks mee...

Ik heb al gevraagd of de provider eventueel bereid is om MySQL te updaten... Zij zouden mij hierover terugbellen.

Bedankt voor jullie help tot dusver.

  • whoami
  • Registratie: December 2000
  • Laatst online: 19:37
Op vrijdag 08 maart 2002 10:07 schreef Grum het volgende:
Weinig mensen kunnen hier lezen .. er staat toch overduidelijk MySQL in et topic.

Altijd leuk dat mensen antwoorden geven en dan niet even de tijd nemen om ze te controleren (of dat er niet bijzetten).

Het is namelijk behoorlijk common knowledge dat mysql geen unions of subqueries ondersteunt in de non-alpha 3.X versie.

En vervolgens komt der weer een reactie van 'Nee dat kan mysql niet' en vervolgens hebben we 50% kans dat iemand z'n postcount met 1 kan ophogen met een lichte flame over mysql over of het wel een echte DBMS is etc etc.

:z - Werk - :+
Excuseer dat ik hier mijn gedacht gezet heb, maar in die 2de post van mij breng ik tenminste nog een andere mogelijke oplossing naar voren, terwijl jij hier met uw post geen enkele andere toegevoegde waarde biedt (behalve dan dat je uw eigen postcount opkrikt, al is dat geen toegevoegde waarde).

https://fgheysels.github.io/


  • Grum
  • Registratie: Juni 2001
  • Niet online
Ik vraag me heel sterk af wat de topicstarter aan een 'union' heeft terwijl dat niet ondersteunt wordt in mysql.

Op het moment dat iemand deze thread opentrekt en die query ziet issie toch alleen maar tijd kwijt met het proberen (en hoogst waarschijnlijk komt er dan een vraag waarom unions niet werken in mysql) - dit omdat et gemiddelde persoon wat hier dingen uit de search trekt en gewoon gebruikt niet genoeg zin/trek/clue heeft om het zelf op te zoeken. (no offence)

Dus je post raakt kant nog wal en dat is niet echt te zeggen van mijn post. Deze dingen gebeuren namelijk wel constant .. mekkeren over mysql en z'n lackende 'features'. Dit terwijl alle informatie zo voor handen is ... tik gewoon www.mysql.com in - ain't that hard.

Het zou gewoon slimmer zijn als je gewoon even je post zou controleren voor je et post - of post gewoon niet - zeker niet als je niet tegen een ietsiebeetje commentaar kan.

Woei .. dat waren wel 6 eurocent :+

  • whoami
  • Registratie: December 2000
  • Laatst online: 19:37
Op vrijdag 08 maart 2002 19:29 schreef Grum het volgende:
Ik vraag me heel sterk af wat de topicstarter aan een 'union' heeft terwijl dat niet ondersteunt wordt in mysql.
Nog niet blijkbaar. Kan ik eraan doen dat ik geen ervaring heb in MySQL, en dus ook niet weet wat MySQL wel en niet ondersteund.
Dus je post raakt kant nog wal en dat is niet echt te zeggen van mijn post.
Dat kan ik wel zeggen. Wat voeg jij hier nu toe met die post aan de topicstarter zijn probleem?
Dit terwijl alle informatie zo voor handen is ... tik gewoon www.mysql.com in - ain't that hard.
Ik ga hier niet alles tot in de puntjes zitten voorkauwen en beantwoorden. Ik geef gewoon een duw. Je kunt toch niet verwachten zeker dat iedereen eerst eens alle sites en boeken gaat gaan raadplegen vooraleer hij iets posts gewoon maar om 100% juist te zijn. Het is ook aan de topicstarter om zelf nog iets uit te zoeken.
Het zou gewoon slimmer zijn als je gewoon even je post zou controleren voor je et post - of post gewoon niet - zeker niet als je niet tegen een ietsiebeetje commentaar kan.
Al goed, ik post niet meer.

https://fgheysels.github.io/


  • Grum
  • Registratie: Juni 2001
  • Niet online
duwen is goed .. maar duw mensen niet een bodemloze put in omdat jij geen zin had om te kijken of der een bodem in zat :+

  • Hoicks
  • Registratie: Maart 2001
  • Laatst online: 17:40
Even voor de duidelijkheid:

Ik ben wezen zoeken maar kreeg geen goed antwoord zowel op Google als op GoT (misschien niet goed genoeg gezocht).

Tevens vraag ik hier om antwoorden die me misschien beter van pas kunnen komen dan de resultaten die ik tot nog toe had gehad. Ik ben nog wel een beetje een n00b op dit gebied.

Daarnaast hebben jullie me wel uitstekend geholpen met het feit dat m'n isp nog met een te oude versie van MySQL werkt, waarna ik ze gebeld heb en zij dit met een paar weken gaan updaten (ik blij en alle andere klanten die daarbij zitten ook waarschijnlijk).

Maar ga nu alsjeblieft niet ' flamen' op elkaar. Ik heb aan (bijna) alle reacties wat gehad met mijn probleem. En weer wat geleerd :)

* ' t is geen flamen vandaar de ' '
Pagina: 1