Wie kann man das Vorkommen von Wörtern in einer Datenbank zählen? (für Tag-Cloud)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wie kann man das Vorkommen von Wörtern in einer Datenbank zählen? (für Tag-Cloud)

    Hallo zusammen,

    ich habe folgendes Skript für eine Tag-Cloud gefunden:
    http://stevethomas.com.au/php/how-to...l-and-css.html

    Hierbei braucht das Skript eine Tabelle/Array mit zwei spalten:
    Spalte 1 = Wort
    Spalte 2 = Anzahl wie oft das Wort vorkommt

    Daraus macht das Skript dann die genannte Tag-Cloud.

    Wie kann ich aber jetzt aus 2 Tabellen in meiner mysql-Datenbank (ich würde gerne 4 verschiedene Felder in diesen 2 Tablelen nutzen) dieses neue Tabelle/dieses neue Array erstellen?

    Hat da jemand nen guten Hinweis oder hat das schon mal jemand programmiert für genau diesen Zweck?

    Vielen Dank.
    Thorsten

  • #2
    Re: Wie kann man das Vorkommen von Wörtern in einer Datenbank zählen? (für Tag-Cloud)

    Original geschrieben von tkliewe
    Wie kann ich aber jetzt aus 2 Tabellen in meiner mysql-Datenbank (ich würde gerne 4 verschiedene Felder in diesen 2 Tablelen nutzen) dieses neue Tabelle/dieses neue Array erstellen?
    ..kann ich nicht verstehen..

    Normal ist das für eine normalisierte datanbank erstellt worden:

    ID | Artikel
    ----|---------
    1 | Haus
    2 | Buch

    ID | Wort
    ---|-----
    1 | Tür
    2 | Dach
    3 | Autorin

    ArtikelID | WortID
    ----------|----------
    1 | 1
    1 | 2
    2 | 3

    und da kannste dann auch ne spalte "verknüpfungen" oder "group by" counten ..

    mfg

    Kommentar


    • #3
      also ich habe z.b. eine Tabelle in der komplette Sätze stehen wie z.B. "Dieter Bohlen finde ich super. Echt super."

      Nun soll mir automatisch aus dieser Tabelle eine zweite Tabelle erstellt werden in der die Wörter aufgelistet werden und wie oft diese in der Ursprungs-Tabelle vorkommen.

      Also:

      Wort | Anzahl
      ----|---------
      Dieter | 1x
      Bohlen | 1x
      finde | 1x
      ich | 1x
      super | 2x
      Echt | 1x

      Daraus kann dann das oben genannte Tag-Cloud Script die Tag-Cloud machen.

      Danke

      Thorsten

      Kommentar


      • #4
        Eine Tag Cloud heißt so, weil sie aus Tags besteht, die den Texten zugeordnet wurden, um sie thematisch zu beschreiben.
        Wenn du einfach die im Text vorkommenden Wörter zählst und die Häufigsten ausgibst, wird das i.d.R. keinen Wert haben. Du brauchst einen Stemmer für die genaue Zählung, der auch gleich die "Füllwörter" per Blacklist rausfiltert.
        Das Ergebnis könnte dennoch im Vergleich mit echten Tags ziemlich mies sein. Also warum nicht gleich vertaggen?

        Kommentar


        • #5
          "Vertaggen" bedeutet dabei händisch, oder wie? Das kommt jedenfalls nicht in Frage.

          Aber das herausfiltern einzelner Wörter ist natürlich sinnvoll!

          Wie wäre also nun die Empfehlung für ein automatischen System, ohne händisch Tags hinzufügen zu müssen?

          Kommentar


          • #6
            Das Ergebnis wird nur eine Wolke der Suchbegriffe, die die meisten Treffer liefern würden. Das hat mit Tags nichts zu tun! Aber wenn du es so willst, sei es so.

            Jeden Text aus der DB ziehen,
            in einzelne Worte zerlegen,
            unerwünschte Wörter rausfiltern,
            zu jedem Wort den Wortstamm bestimmen,
            (Wort gewichten,)
            Wortstamm, Anzahl Vorkommen im Text (, Gewicht) und ID des Originaltexts in DB speichern.

            Für die Cloud holst du die x häufigsten (und gewichtigsten) Wörter aus der DB.
            Nebenbei kannst du die Tabelle auch prima für die Suche nutzen. Drupal macht das zum Beispiel so (ähnlich).

            Kommentar

            Lädt...
            X