[PHP/MySQL] Rating met zoeksystemen?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben nu "toevallig" even bezig met een zoeksysteempje... maar zit toch nog met een paar vraagjes.

Heb nu de volgende MySQL string:

SELECT titel, MATCH (bericht) AGAINST ('bericht') as rating FROM for_bericht WHERE MATCH(bericht) AGAINST ('bericht')

Dit werkt verder wel goed, krijg de titel van het bericht, inclusief de rating. Alleen deze rating is (tot nu toe) altijd van 0 tot 2.343534534 of zoiets. Hoe hoger deze rating, hoe beter dat bericht dus beoordeeld is. Echter wil ik deze rating ook presenteren aan de gebruiker, alleen dan in een percentage vorm, dus "dit bericht voldoet 89% aan jouw zoekopdracht".
Om dit te doen moet ik de maximum score weten die te behalen is, om zo terug te kunnen rekenen naar percentages... maar wat kan er maximaal gescoord worden? 2,5 of 3.0, of misschien nog meer. Ik kan het namelijk nergens vinden.

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
Je kan toch in ieder geval het hoogste rating getal eruit halen en dan met php de percentages berekenen :?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
MJha, maar dan bereken je het percentage op basis van de hoogste, ipv op basis van het maximaal haalbare. Dus is de uitkomst dan wel helemaal correct?
Dan zou een hoogste score van 0,1 opeens voor 100% kunnen gelden, terwijl dit ten opzichte van het (nog uit te zoeken :P) maximum, misschien 5% zou zijn of zo...
Lijkt me dus toch beter om het te vergelijken met het maximaal haalbare.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ik kom HIER trouwens ook scores tegen van 1.50xxxxxxx

Maar er staat nergens vermeld hoe die rating wordt berekend (of wat het maximaal haalbare is :P).

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb hier scores van 2.34xxxxxxxx, is het hoogst tot nu toe, vandaar mijn vermoeden dat het maximum ergens rond de 2,5 of 3,0 zou liggen... maar zeker weten doe ik het niet natuurlijk :)

Acties:
  • 0 Henk 'm!

Verwijderd

En als je zoekwaarde helemaal gelijk is aan datgene wat je doorzoekt. Het lijkt me dat je dan een relevantie van 100% hebt.

Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

BtM909 schreef op 12 juni 2003 @ 09:59:
Ik kom HIER trouwens ook scores tegen van 1.50xxxxxxx

Maar er staat nergens vermeld hoe die rating wordt berekend (of wat het maximaal haalbare is :P).
Wat ik er van begrijp doet ie een match van 0 tot 1. Het probleem zit em dus in dat ie twee keer aangeroepen wordt in de query en dus de match bij elkaar optelt.

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik kom op ratings van 2.34 .. dus dat zou je zelfs niet redden met 2 x 1 :) Bovendien zou MySQL zowieso de MATCH maar 1x uitvoeren (anders erg veel activiteit)... en staat AS rate natuurlijk enkel achter de eerste MATCH, dus denk niet dat dat het geval is.

Ik zal maar de genoemde manier gebruiken (hoogste = 100%) anders weet ik t ook niet, maximum schijnt nergens bekend te zijn :D

Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

Woei. Staat dus wel gewoon op die pagina:
When MATCH() is used in a WHERE clause (see example above) the rows returned are automatically sorted with highest relevance first. Relevance values are non-negative floating-point numbers. Zero relevance means no similarity. Relevance is computed based on the number of words in the row, the number of unique words in that row, the total number of words in the collection, and the number of documents (rows) that contain a particular word.
Lijkt me dus duidelijk dat er geen limiet aan de rating zit. Als je 2000 keer hetzelfde woord in de tekst zou hebben zou ie er dus een rating van 2000 (of hoger) van maken. B)

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
moet je wel een 2e SQL query opnemen met iets als "max(MATCH (bericht) AGAINST ('bericht*')) as maxrating" ... is hij dus eigenlijk 2x aan het zoeken. Is daar niks aan te doen?

Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

Verwijderd schreef op 12 June 2003 @ 11:26:
moet je wel een 2e SQL query opnemen met iets als "max(MATCH (bericht) AGAINST ('bericht*')) as maxrating" ... is hij dus eigenlijk 2x aan het zoeken. Is daar niks aan te doen?
Als je PHP gebruikt zou je em kunnen fetchen als array en daar dan van een kolom het maximum kunnen laten berekenen door PHP. Scheelt iig weer een search. ;)

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.

Pagina: 1