php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.02.2009, 19:02  
Erfahrener Benutzer
 
Benutzerbild von Felk
 
Registriert seit: 23.02.2009
Beiträge: 219
PHP-Kenntnisse:
Fortgeschritten
Felk befindet sich auf einem aufstrebenden Ast
Felk eine Nachricht über MSN schicken Felk eine Nachricht über Skype™ schicken
Standard Suchfunktion MySQL-Abfrage, meiste Treffer zuerst

Hi!
Ich suche eine möglichkeit, eine Suchfunktion zu bauen, die die Ergebnisse nach treffern sortiert...
bis jetzt ist die Suchfunktion sehr Schlicht:
PHP-Code:
SELECT title FROM contents WHERE content LIKE '%$needle%' 
Nun ist die Ausgabe noch recht unsortiert, also es kann sein, dass ein Beitrag mit nur einem treffer direkt neben einem mit 100 Treffern ist...
Nun würde ich gerne wissen, wie ich herausfinden kann, wie oft in WHERE content LIKE '%$needle%' ein Treffer erzielt wurde!

MFG Felk
Felk ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.02.2009, 20:02  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Siehe MySQL-Handbuch, Schlagwörter: Fulltext/Volltextsuche, MATCH AGAINST oder wenn du es genau auf die angegebene Weise lösen willst, schau dort nach den Stringfunktionen, ob es ein Stringcount o.ä. gibt.
Chriz ist offline  
Alt 23.02.2009, 20:23  
Erfahrener Benutzer
 
Benutzerbild von Felk
 
Registriert seit: 23.02.2009
Beiträge: 219
PHP-Kenntnisse:
Fortgeschritten
Felk befindet sich auf einem aufstrebenden Ast
Felk eine Nachricht über MSN schicken Felk eine Nachricht über Skype™ schicken
Standard

Hmm... mit MATCH ... AGAINST ... komme ich nicht weiter,
Ich möchte ja nicht nur wissen, welcher Datensatz das Stichwort $needle enthält, sondern auch wie oft das Stichwort $needle im jeweiligen Datensatz enthalten ist!
Felk ist offline  
Alt 23.02.2009, 21:13  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Dann zähl die Treffer durch LIKE eben in PHP und sortier dann, wenn dir die Relevanz von MATCH AGAINST nicht zusagt. Oder du schreibst dir eine Prozedur mit INSTR(). Dabei kann ich dir aber nicht weiterhelfen.
Chriz ist offline  
Alt 23.02.2009, 21:35  
Erfahrener Benutzer
 
Benutzerbild von Felk
 
Registriert seit: 23.02.2009
Beiträge: 219
PHP-Kenntnisse:
Fortgeschritten
Felk befindet sich auf einem aufstrebenden Ast
Felk eine Nachricht über MSN schicken Felk eine Nachricht über Skype™ schicken
Standard

gibt es INSTR() überhaupt? oder ist das eine MySQL-Funktion?

Naja... zuindestens erscheint mir das als ziemlich schwierig!
Schließlich muss ich, um eine MySQL-Ausgabe nach Treffern zu sortieren, diese Ausgabe erstmal verarbeiten... danach müsste ich sie wieder in ein Objekt verpacken, weil der Rest des Scriptes so weiterarbeitet und gravierende Änderungen wahrscheinlich was kaputt machen würde...

Ich kenne mich leider mit objektorientierter Programmierung in PHP nicht so gut aus, und ich habe auch nicht wirklich einen festen Plan, wie ich die Ausgabe dann nach Treffern sortieren soll...

kann mir bitte noch jemand helfen?
Felk ist offline  
Alt 23.02.2009, 21:39  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Wie dir Chriz schon zu sagen versucht hat: MATCH AGAINST liefert dir einen score/Relevanzwert zurück. Nach diesem kannst du sortieren...
Schau dir einfach die Beispiele im MySQL-Manual an...
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 23.02.2009, 22:06  
Erfahrener Benutzer
 
Benutzerbild von Felk
 
Registriert seit: 23.02.2009
Beiträge: 219
PHP-Kenntnisse:
Fortgeschritten
Felk befindet sich auf einem aufstrebenden Ast
Felk eine Nachricht über MSN schicken Felk eine Nachricht über Skype™ schicken
Standard

Aha... gut, nurnoch 2 Fragen:

1. Wenn man MATCH ... AGAINST verwendet, sortiert sich die Abfrage dann von selbst, oder muss man da noch was spezielles als ORDER BY hinschreiben?
2. Kann ich dann mehrere Suchwörter eingeben? z.B. so:
PHP-Code:
SELECT `titleFROM `contentsWHERE MATCH(`content`) AGAINST('$needle1','$needle2'
Felk ist offline  
Alt 23.02.2009, 22:08  
Erfahrener Benutzer
 
Benutzerbild von dsmcg
 
Registriert seit: 11.10.2005
Beiträge: 2.405
dsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäre
Standard

das müsste eigentlich weiterhelfen: MySQL :: MySQL 5.1 Referenzhandbuch :: 12.7 MySQL-Volltextsuche
dsmcg ist offline  
Alt 23.02.2009, 22:15  
Erfahrener Benutzer
 
Benutzerbild von Felk
 
Registriert seit: 23.02.2009
Beiträge: 219
PHP-Kenntnisse:
Fortgeschritten
Felk befindet sich auf einem aufstrebenden Ast
Felk eine Nachricht über MSN schicken Felk eine Nachricht über Skype™ schicken
Standard

Folgendes hätte mir auch gereicht ^^...
1. ja, sortiert sich selbst
2. Nein

aber gut...danke ... das macht mir nur noch mehr Probleme... und was ist um Himmels Willen immer mit Index gemeint... muss ich da was bestimmtes machen, oder kann ich auch ohne irgendsowas mit MATCH AGAINST einen Text durchsuchen?
Und bitte sagt mir auch die Antwort, bevor ihr mich zu irgendwelchen Links schickt

Geändert von Felk (23.02.2009 um 22:18 Uhr).
Felk ist offline  
Alt 23.02.2009, 22:28  
Erfahrener Benutzer
 
Registriert seit: 20.02.2009
Beiträge: 202
MichaMedia ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Lese Dir mal die Doku zur Volltextsuche durch!
Hier auch mal ein netter FAQ Beitrag: Datenbanken: MySQL - Wie realisiere ich eine Volltextsuche mit MySQL?
MichaMedia ist offline  
 


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
[Erledigt] MySql Frage: Problem mit einer etwas lomplexeren Abfrage tomtaz Datenbanken 5 24.06.2008 22:36
MySQL Abfrage als PHP class d3rbastl3r PHP Tipps 2008 2 11.06.2008 15:41
Frage: richtige SQL Abfrage von einer MySQL Spalte die SET werte besitzt Seb PHP Tipps 2008 2 29.05.2008 11:36
Datum bezogene mysql abfrage ApfeL Datenbanken 5 22.10.2006 16:03
MySQL Abfrage macht Seite langsam Datenbanken 11 19.10.2006 19:38
MySQL Abfrage Von / Bis andrew22 Datenbanken 1 02.10.2006 11:04
MySQL - Abfrage: Unterschiedliche Ergebnisse aus PHP/manuell horstenpeter Datenbanken 3 16.07.2006 13:22
mysql abfrage in Schleife havok PHP Tipps 2006 6 09.05.2006 08:39
mysql abfrage mqs PHP Tipps 2006 4 09.04.2006 17:57
Abfrage bei mySQL 4 ApfeL Datenbanken 5 24.03.2006 18:53
[Erledigt] MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
mySql Abfrage wie wäre die sauberer? PHP Tipps 2005-2 5 31.07.2005 19:26
MySQL Abfrage Problem. web2 PHP Tipps 2005-2 7 25.07.2005 11:07
komplizierte mySQL Abfrage Datenbanken 6 25.06.2004 15:34
[Erledigt] mysql Abfrage Datenbanken 5 18.06.2004 14:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
treffern sehr, php suchfunktion mysql, treffern sehr\, http://www.php.de/php-einsteiger/52181-suchfunktion-mysql-abfrage-meiste-treffer-zuerst.html, mysql instr, mysql nach treffer sortieren, match against mysql mehrere suchwörter, mysql suchfunktion sortieren, suchfunktion php mysql, mysql order by treffer, mysql instr langsam, php instr, mysql abfrage instr, mysql 5 fulltest suchfunktion, mysql select * from where nach treffern sortieren, php suche nach meisten treffer sortieren, mysql ausgabe ordnen nach trefferanzahl, mysql php suchfunktion, where match against sortieren, code für meisten treffer

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:32 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