php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.07.2006, 17:07  
Neuer Benutzer
 
Registriert seit: 11.07.2006
Beiträge: 9
Zauderer
Standard Umkehrung der Volltextsuche

Hallo,

ich habe diese Frage zwar schon in einem anderen Forum gestellt.
Hoffe jedoch, dass doppelt besser hält

Meine Frage:

Die Volltextsuche sortiert automatisch nach Relevanz.
Dabei bekommt der Suchbegriff, der am wenigsten im Ergebnis auftaucht die höchste Relevanz.

Bsp: Hans, Hans, Hans, Peter, Peter, Wurst
Ergebnis: Wurst, Peter, Hans

Das macht auch Sinn, schließlich sollen nicht "Allerweltswörter" hohe Relevanz bekommen.

Außer eben bei mir
Wie kehre ich also das Ergebnis um?
Ich möchte dass,
Hans an erster, Peter an zweiter und Wurst an Dritter stellen ausgegeben wird.

Mein Befehl lautet wie folgt:
"$query = "SELECT name FROM tabelle WHERE MATCH (suchwort) AGAINST ('$suchwort') AND gebiet = ('$gebiet')";"

Vielen Dank.
Zauderer ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.07.2006, 18:32  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Die Relevanz wird ja als Zahlenwert ausgedrückt, den kannst du normal aufsteigend sortieren. Allerdings solltest du dann MATCH-AGAINST nicht in die WHERE-Bedingung schreiben, da sonst ja die total unrelevanten Ergebnisse (die du ja genau haben willst) 0 ergeben und aus der Ergebnismenge fliegen.
Zergling-new ist offline   Mit Zitat antworten
Alt 11.07.2006, 19:45  
Neuer Benutzer
 
Registriert seit: 11.07.2006
Beiträge: 9
Zauderer
Standard

Hallo,

vielen Dank für die Antwort.
Zitat:
Zitat von Zergling
Die Relevanz wird ja als Zahlenwert ausgedrückt, den kannst du normal aufsteigend sortieren. Allerdings solltest du dann MATCH-AGAINST nicht in die WHERE-Bedingung schreiben, da sonst ja die total unrelevanten Ergebnisse (die du ja genau haben willst) 0 ergeben und aus der Ergebnismenge fliegen.
Leider bekomme ich die Abfrage nicht hin.
Könntest Du mir bitte weiter helfen?


Danke.
Zauderer ist offline   Mit Zitat antworten
Alt 11.07.2006, 20:18  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

SELECT MATCH(..) AGAINST(..) AS relevanz, andereSpalten FROM tabelle ORDER BY MATCH(..) AGAINST(..) ASC
Zergling-new ist offline   Mit Zitat antworten
Alt 11.07.2006, 20:19  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Code:
SELECT
    name,
    MATCH (suchwort) AGAINST ('$suchwort') AS relevanz
FROM
    tabelle
WHERE
    gebiet = ('$gebiet')"
HAVING
    relevanz > 0.001
ORDER BY
    relevanz
xabbuh ist offline   Mit Zitat antworten
Alt 11.07.2006, 20:42  
Neuer Benutzer
 
Registriert seit: 11.07.2006
Beiträge: 9
Zauderer
Standard

Hallo,

vielen Dank.

Dieser Code funktioniert einwandfrei:
Zitat:
Zitat von xabbuh
Code:
SELECT
    name,
    MATCH (suchwort) AGAINST ('$suchwort') AS relevanz
FROM
    tabelle
WHERE
    gebiet = ('$gebiet')"
HAVING
    relevanz > 0.001
ORDER BY
    relevanz
Auch Dir Zergling vielen Dank.

Tolles Forum!


Grüße.
Zauderer ist offline   Mit Zitat antworten
Alt 13.07.2006, 23:55  
Neuer Benutzer
 
Registriert seit: 11.07.2006
Beiträge: 9
Zauderer
Standard

Hallo,

wenn ich ein "DESC" an die Abfrage einfüge, dann erhalte ich das gewünschte Ergebnis.

Beispel:

Zeile 1(im Volltext) = Peter, Peter, Peter, Peter
Zeile 2(im Volltext) = Peter, Peter, Peter

Relevanz = Zeile 1 > Zeile 2 = 1.2222 vs. 1.1111 (z.B.)

Die vollständige Abfrage lautet:

SELECT id,
MATCH (
suchwort
)
AGAINST (
'$suchwort'
) AS relevanz
FROM tabelle
WHERE gebiet = ( '$gebiet' )
HAVING relevanz > 0.001
ORDER BY relevanz DESC
LIMIT 0 , 30

Wobei zu erwähnen ist, dass ich unter 10 Zeilen in der Testtabelle habe.


Grüße.
Zauderer ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQL Volltextsuche mit PHP DarkThunder Datenbanken 5 21.03.2007 19:08
Volltextsuche liefert kein Ergebnis xarok PHP Tipps 2007 10 02.01.2007 13:44
Tipp zur Volltextsuche? InnoDB zu MyISAM? bicpi Datenbanken 0 21.09.2006 17:43
Problem bei Volltextsuche rabatz Datenbanken 1 17.08.2006 14:05
Volltextsuche mit InnoDB guenterfrosch Datenbanken 2 04.06.2006 14:41
Volltextsuche malabarista Datenbanken 1 24.04.2006 19:59
[Erledigt] Volltextsuche liefert kein Ergebniss Datenbanken 1 02.09.2005 09:41
Problem mit Volltextsuche und Abfrage pixelcut Datenbanken 0 09.08.2005 19:54
MySQL 3.23.x Volltextsuche mit Boolean codix Datenbanken 0 29.07.2005 14:42
volltextsuche in der db mit filterung Alpha Centauri PHP-Fortgeschrittene 1 03.07.2005 00:34
Volltextsuche programmieren BigManu PHP Tipps 2005 6 02.06.2005 11:24
Volltextsuche / Filter Datenbanken 0 17.11.2004 11:23
Volltextsuche veranstalten PHP Tipps 2004 2 21.08.2004 22:17
Volltextsuche in einer Datenbank PHP Tipps 2004 1 21.07.2004 10:20
[Erledigt] Phrasen - Volltextsuche Datenbanken 0 25.06.2004 11:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
order by umkehrung, php match against sort, where match against relevanz, php match against sortieren, match against wie nach relevanz sortieren

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:34 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.