phpbar.de logo

Mailinglisten-Archive

Count Matches in Suchabfrage

Count Matches in Suchabfrage

Michael Bergbauer mysql_(at)_lists.phpcenter.de
Tue, 14 Aug 2001 17:48:31 +0200 (CEST)


On 14-Aug-2001 Jörg Schwalenberg wrote:
>> >
>> >gibt es in Mysql die Möglichkeit, die Anzahl von Übereinstimmungen in
> einer
>> >Column über ein SQL Statement zu counten und dadurch eine Relevance der
>> >Suche, mit einer Sortierung über diese Relevance, zu realisieren ?
>> >
>> >Wäre toll, wenn Ihr dafür eine Lösung hättet.
>>
>> Geht es vielleicht hiermit ?
>> -----
>> query = "select count(id) as anzRow from tabelle where blabla='blubb'";
>> $result = _(at)_mysql_query($query);
>> $rows = _(at)_mysql_result($result,0,"anzRow");
>> -----
> Halo Michael,
> 
> damit erhalte ich die Anzahl an übereinstimmenden Rows der Column.
> Was mich interessiert, wäre die Anzahl an Matches im jeweiligen DS.
> Wenn ich z.B: nach "text" suche und in dem DS dieses Wort vier mal vorkommt,
> so möchte ich diesen Wert "4" erhalten um ihn danach über Order by zu
> sortieren.

So wie du es haben willst gehts sicherlich nicht, zumindest nicht automatisch.

Es gibt zwei Fälle: Entweder hast du mehrere Spalten, in denen "text" drinstehen
kann, oder ein Feld, in denen es mehrmals vorkommen kann (dann suchst du aber
mit like nach "%text%"). Erster Fall: Kannst du vergessen, du musst nämlich
immer explizit hinschreiben, in welcher Spalte gesucht werden soll. Wenn du
jetzt dein Statement entsprechend formulierst, alle Kombinationen bei denen
"text" n mal vorkommt entsprechend oder verknüpfst, dann hast du das ganze fü
r ein n. Alles für alle n gemacht, und du hast was du willst.

Zweiter Fall: Suche nach "%text%": hier steht % als wildcard für beliebige
Zeichen, MySQL sieht also nach, _ob_ "text" irgendwo in dem Suchfeld steht,
aber nicht wie oft. Hier ist gar keine Lösung möglich, aber: ich verweise mal
auf den Fulltext-Index, und alles was damit zusammenhängt, und evtl. kannst du
dein Problem auch mit ner Stichwort-Tabelle in den Griff bekommen


Michael

-- 
Michael Bergbauer <michael_(at)_noname.franke.de>
Use your idle CPU cycles.
See http://www.distributed.net and win $ 1 000.
Visit our mud Geas at geas.franken.de Port 3333

---
!!NEU!!
Fragen und Antworten zu MySQL und dieser Liste unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive