Eintrag paßt zu x%

Hallo,

ich weiß zwar jetzt nicht so recht, ob ich hier oder lieber bei den Datenbanken rein schreiben sollte, aber seis drum.

Ich schreibe gerade eine Suchseite in der es viele Suchkriterien gibt.
Im Moment werden dabei aber 100%ige Treffer akzeptiert(wegen select).

Nun habe ich im Netz aber auch Seiten entdeckt, in dennen die Einträge zu einem bestimmten Prozentsatz passen.

Wie könnte man sowas angehen?

naja - meiner Meinung nach hat das garnix so recht mit Programmierung zu tun. Vlltm mehr Internet Allgemein…
aber wie dem auch sei…

Bei mehreren Suchbegriffen kann man natürlich sagen, dass wenn nur einer gefunden wurde nur 50% zutreffend ist. Gleiches geht natürlich bei der falschen Kategorie…
evtl sind da auch verschiedene Korrekturallgorythmen im Hintergrund die Deine Eingabe zu korrigieren versuchen…

RMA wird dann zu RAM übersetzt oder „flasch“ zu „falsch“ bzw andersrum.
Es könnte auch sein, dass bei kurzen suchbegriffen dieser einfach zerstückelt wird und in es so richtig seltsame Ergebnisse geben könnte…
Dann kann natürlich jeder Admin sagen…
„wenn die Kategorie falsch ist, dann triffts nur zu 80%“ oder
„wenn die Buchstaben verdreht sind triffts nur zu 75%“ etc.
Abgesehen davon kann kein Mensch ausser Dir wissen, wonach Du genau suchst und ob Dein RAM-Riegel ein Ergebnis zu Produktvergleichen, Baupläne, die Geschichtliche Entwicklung oder einen Anbieter für eine Bestellung finden soll… Also kannst nur Du beurteilen, wie zutreffend ein Suchergebnis ist…

Abgesehen davon kann man natürlich auch noch herangehen und sagen, dass der Bericht A das Wort „RAM“ 5x enthält (=100%).
Bericht B enthält es 3x und kommt damit auf 60%…
wie gesagt - eine Sache der Definition…

ja ne,

ich habe mich nicht korrekt ausgedrückt. Entschuldigung.

Mir gehts direkt um die Umsetzung, aber um bei deinem Beispiel zu bleiben:

Mal angenommen wir haben ein Formular wo man angeben kann:
Prozessor: 1000 MHz …
RAM: 64,128,256 …

usw.

Wenn jetzt ein Nutzer bei Prozessor eine Angabe macht und bei RAM und bei Grafikkarte und etc. pp, dann schließt er natürlich viele Rechner aus, die vielleicht auch gegangen wären, die aber nur z.B. 100 MHz weniger als gewünscht haben.

Dann würde das zu x-Prozent passen.

So… Ich habe jetzt aber meinen Select so aufgebaut, dass immer wenn eine Angabe gemacht wurde also Feld/Variable != NULL ist das an den Select ran gehängt wird (WHERE ID=dings).

Jetzt fehlt mir der Ansatz wie ich das umbauen kann…

sag das doch gleich…
ich würds so machen, dass Du zwei (oder mehr) unterschiedliche Querys nimmst…

in den query-ergebnissen nimmst Du dann die id’s der Ergebnisse und machst ein array daraus…

also etwa so:

$id = $result['id];
if (!isset($array[$id])) $array[$id] = 1;
else $array[$id]++;

am Ende hast Du dann ein array, in dem du schön mit arsort($array); die Ergebnisstaffelung hinbekommen kannst… und mit dem Arrayinhalt kannst Du dann ja den %-Wert errechnen…

hm, ok - aber wie mache ich das mit den selects … ein select-Array oder so…

ach ich kann heute nicht mehr denken.

Morgen mal drüber nachdenken.

Hallo,

ich denke, es kommt mehr auf die Datenbank und auf die Art, wie die Daten hinterlegt werden an, als auf die Abfragen.

Beispiel: Wenn der Benutzer nach einem Computer mit einem Prozessor mit 1000 MHz sucht, kannst du in deiner Datenbank hinterlegen, dass nach Prozessoren mit 900 bis 1100 MHz gesucht werden soll. Dann musst du noch eine Funktion erstellen, um die Übereinstimmung auszurechnen.
Das kann so aussehen, dass bei einem 900er eine 25% Übereinstimmung erreicht wird. Wenn du dann mehrere Komponenten hast, dann musst du halt den Durchnittswert ausrechnen - voila!

Nun, ich hatte am Anfang gesagt, dass es darauf ankommt, wie die Daten untergebracht werden. Bei Prozessoren ist das relativ einfach zu bewerkstelligen, aber wenn du an Grafikkarten denkst, so kann jemand nach einer guten nvidia-GraKa suchen, und du willst ihm eine ati-GraKa der selben Klasse anbieten, dann musst du irgendwie angeben, wie die Übereinstimmung berechnet werden soll.
Das kann einmal anhand einer Bewertungsskala geschehen (nicht sehr gut, weil schwer zu handhaben), oder über eine Übereinstimmungstabelle, die angibt, dass die beiden GraKarten zu 50% übereinstimmen bspw… Dass das zusätzliche Arbeit für den maintainer der Datenbank ist, sollte klar sein.

soweit meine 2ct.

Gruss, Omar Abo-Namous

entweder das oder halt für jede Bedingung die möglich ist eine eigene Abfrage…

entweder das oder halt für jede Bedingung die möglich ist eine
eigene Abfrage…

hm, ach na eben. Son Mist, dabei habe ich mir so ne Mühe mit meinem zusammengebastelten Riesenselect gemacht.

Naja, so wird es wohl werden.

Hallo,

ich hab das nochmal neu gepostet.

Bin jetzt erst zur Umsetzung gekommen und steh wieder dumm da. Deinen Vorschlag mit den Resultsets versteh ich auch nich so richtig.

mal bitte den neuen Eintrag lesen und bittttttttte helfen…
danke :smile: