depp: MySQL: WHERE MATCH...AGAINST...

moin
gerne würde ich nicht nur begriffe wünschen, welche gefunden werden sollen, sondern auch welche verneien.
hab mal versucht, das mit einem vorausgestellteten minus (-) zu machen; jedoch erfolglos.
danke für tipps

  1. hi,

    gerne würde ich nicht nur begriffe wünschen, welche gefunden werden sollen, sondern auch welche verneien.
    hab mal versucht, das mit einem vorausgestellteten minus (-) zu machen; jedoch erfolglos.

    wird denn das in deiner mysql-version schon unterstützt?
    http://dev.mysql.com/doc/mysql/en/fulltext-boolean.html

    und hast du auch die dafür nötigen schlüsselwörter angegeben?

    MATCH (...) AGAINST ('+enthalten -nichtenhalten' IN BOOLEAN MODE)

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. moin!
      was meinst Du mit schlüsselwoertern?
      kann es evt. daran liegen, dass ich IN BOOLEAN MODE weggelassen habe?
      danke

      1. hi

        was meinst Du mit schlüsselwoertern?
        kann es evt. daran liegen, dass ich IN BOOLEAN MODE weggelassen habe?

        ganz bestimmt sogar.

        Gruß
        Reiner

        1. hallo
          gut. dann funktioniert es nun schonmal theoretisch...
          jedoch ist da noch ne kleinigkeit. die groß/kleinschreibung darf nicht beachtet werden also ignore case sensitive...
          geht das auch irgendwie?
          danke

          1. hallo
            gut. dann funktioniert es nun schonmal theoretisch...
            jedoch ist da noch ne kleinigkeit. die groß/kleinschreibung darf nicht beachtet werden also ignore case sensitive...
            geht das auch irgendwie?

            macht mysql ohne zutun automatisch

            1. moin
              dann wüsste ich jedoch nun gerne, warum gleich der erste treffer der anfrage
              SELECT * FROM test WHERE MATCH (beschreibung1) AGAINST ('+box+sound+subwoofer -tv -auto ' IN BOOLEAN MODE)
              den begriff TV im feld beschreibung1 stehen hat...
              sehr eigenartig!

              1. dann wüsste ich jedoch nun gerne, warum gleich der erste treffer der anfrage
                SELECT * FROM test WHERE MATCH (beschreibung1) AGAINST ('+box+sound+subwoofer -tv -auto ' IN BOOLEAN MODE)
                den begriff TV im feld beschreibung1 stehen hat...
                sehr eigenartig!

                welche Art Index hast Du auf dem Feld "beschreibung1"?

                1. fulltext

                  1. fulltext

                    sehr gut, wollte nur sichergehen! ;-)

                    was passiert denn, wenn Du das machst:

                    SELECT MATCH (beschreibung1) AGAINST ('+box+sound+subwoofer -tv -auto ' IN BOOLEAN MODE) FROM test

                    1. habs mal in phpmyadmin eingegeben. dann erscheint folgendes:
                      MATCH ( beschreibung1 ) AGAINST ( '+box+sound+subwoofer -tv -auto ' IN BOOLEAN MODE )  steht drüber und es folgen zahlreiche zeilen mit dem einzigen inhalt NULL (0).
                      was hat das zu bedeuten

                      1. habs mal in phpmyadmin eingegeben. dann erscheint folgendes:
                        MATCH ( beschreibung1 ) AGAINST ( '+box+sound+subwoofer -tv -auto ' IN BOOLEAN MODE )  steht drüber und es folgen zahlreiche zeilen mit dem einzigen inhalt NULL (0).

                        kein Treffer! War das nicht das, was Du wolltest?

                        1. weshalb bekomm ich dann so viele FALSCHE treffer beim verwenden von
                          SELCET * FROM test WHERE MATCH ( beschreibung1 ) AGAINST ( '+box+sound+subwoofer -tv -auto ' IN BOOLEAN MODE )

                          1. moin
                            hab das problem nun erkannt. es werden die ergebnisse trotzdem angezeigt, wenn sie davor/danach kein leerzeichen haben.
                            also "tv-sound" wird ignoriert von der anweisung "-tv".
                            demnach versuchte ich mal
                            SELCET * FROM test WHERE MATCH ( beschreibung1 ) AGAINST ( '+box+sound+subwoofer -*tv* -auto ' IN BOOLEAN MODE )

                            aber die sternchen scheinen mir da nicht weiterzuhelfen.
                            was kann ich stattdessen verwenden?
                            danke

                            1. Hi,

                              SELCET * FROM test WHERE MATCH ( beschreibung1 ) AGAINST ( '+box+sound+subwoofer -*tv* -auto ' IN BOOLEAN MODE )
                              aber die sternchen scheinen mir da nicht weiterzuhelfen.

                              bei LIKE werden % benutzt. Guck halt ins Handbuch, was bei MATCH AGAINST verwendet werden kann.

                              cu,
                              Andreas

                              --
                              Warum nennt sich Andreas hier MudGuard?
                              Schreinerei Waechter
                              Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                              1. Hallo,
                                ich glaube, es liegt daran, das Wörter die kürzer als vier Buchstaben sind nicht indexiert werden, was ja bei TV der Fall ist.
                                Bin mir aber nicht sicher.
                                Gruß Michael

                            2. hi,

                              hab das problem nun erkannt. es werden die ergebnisse trotzdem angezeigt, wenn sie davor/danach kein leerzeichen haben.
                              also "tv-sound" wird ignoriert von der anweisung "-tv".
                              demnach versuchte ich mal
                              SELCET * FROM test WHERE MATCH ( beschreibung1 ) AGAINST ( '+box+sound+subwoofer -*tv* -auto ' IN BOOLEAN MODE )

                              aber die sternchen scheinen mir da nicht weiterzuhelfen.
                              was kann ich stattdessen verwenden?
                              danke

                              bitte jetzt nicht wild rumprobieren.
                              Ich glaube, Du hast was falsch verstanden!
                              bei einer Abfrage '-sound' würde 'tv-sound' sicherlich noch gefunden, weil tv-sound als eigenständiges Wort auftaucht.

                              Warum Deine Abfrage nicht funktioniert, kann ich Dir momentan nicht sagen. Welche MySQL-Version hast Du denn?
                              Hast Du mal versucht, die Beispiele bei MySQL, die unter Fulltext-Suche stehen, auszuprobieren? Funktionieren diese alle?

                              Gruß
                              Reiner