jo: MySQL: Suche verfeinern, wie muss der Query verändert werden...

Hi.

Es gibt eine Suche.

SELECT stuff FROM table WHERE content LIKE '%searched%'

So. Angenommen es gibt eine Zelle mit dem Wert:
"Hallo mein Bein ist ab."

Wenn ich nun einen Teil des Strings eingebe dann findet er diesen Satz.
Wenn es aber _zwei_ Zeichenketten aus dem Satz sind. Findet ers nicht.

Wie mach ich das?

Also:
"Hallo mein Bein ist ab."

"lo mein" - wird gefunden.
"Hallo" - wird gefunden.

"Hallo ist" - wird nicht gefunden ;). Soll aber gefunden werden!

Habt ihr da ne Lösung?

viele liebe Grüße, JO!

  1. Hi,

    Es gibt eine Suche.
    SELECT stuff FROM table WHERE content LIKE '%searched%'

    Du meinst eine durch eine künstliche Singularität erzeugte Zeitdillatation.

    Wenn es aber _zwei_ Zeichenketten aus dem Satz sind. Findet ers nicht.
    Wie mach ich das?

    Genauso wie bei einer: mit MATCH AGAINST, und ***NICHT*** mit LIKE und Wildcards vorne und hinten.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi.

      Genauso wie bei einer: mit MATCH AGAINST, und ***NICHT*** mit LIKE und Wildcards vorne und hinten.

      Welche Art von Voltlextsuche würdest du da EMpfehlen. boolsche?

      greetz, jo

      1. Hi,

        Welche Art von Voltlextsuche würdest du da EMpfehlen. boolsche?

        das hängt von Deinen Ansprüchen ab. Probiere am besten aus, welche Ergebnisse Dir bei Deinen Inhalten und typischen Suchen am sinnvollsten erscheinen.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          Welche Art von Voltlextsuche würdest du da EMpfehlen. boolsche?

          das hängt von Deinen Ansprüchen ab. Probiere am besten aus, welche Ergebnisse Dir bei Deinen Inhalten und typischen Suchen am sinnvollsten erscheinen.

          Cheatah

          Ich habs jetzt so gemacht das ich erst eine volltextsuche IN NATURAL LANGUAGE MODE und danach eine LIKE suche mit wildcards vorne, hinten und zwischen jedem Wort.
          Danach entferne ich doppelte ergebnisse :)

          Ist wirklich perfekt. Man findet alles.

          Gruß, jo

          1. Hi,

            Ich habs jetzt so gemacht das ich erst eine volltextsuche IN NATURAL LANGUAGE MODE und danach eine LIKE suche mit wildcards vorne, hinten und zwischen jedem Wort.
            Danach entferne ich doppelte ergebnisse :)

            Ist wirklich perfekt. Man findet alles.

            tja, so unterschiedlich sind die Ansprüche: Ich behaupte, es ist die schlechteste aller denkbaren Lösungen, natürlich abgesehen von denen, die bewusst mit dem Ziel konstruiert wurden, noch schlechter zu sein. LIKE mit Wildcard vorne ist ein absolutes Tabu, sofern Du keinen Reverse Index aufgebaut hast (den MySQL soweit ich weiß nicht beherrscht); und LIKE mit Wildcard vorne _und_ hinten ist ein definitiv absolut absolutes Tabu, sofern die Datenbank-Technik nicht inzwischen einen Sprung gemacht hat, von dem ich nichts mitgekriegt habe.

            Aber nun, es soll ja auch Leute geben, die im ersten Gang auf der Autobahn 180 Sachen heizen.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Moin Moin!

              [...] LIKE mit Wildcard vorne _und_ hinten [...]
              Aber nun, es soll ja auch Leute geben, die im ersten Gang auf der Autobahn 180 Sachen heizen.

              Und wie auch auf der Autobahn geht das nicht lange gut -- nur dass MySQL am Ende des Tages nicht so viel Alteisen produziert wie das Auto.

              Alexander

              --
              Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
            2. Okay wie du merkt habe ich da nicht soviel Ahnung.

              Schön wäre aber eine Erklärung ;)

              Gruß,

              Jo

    2. Hi there,

      Du meinst eine durch eine künstliche Singularität erzeugte Zeitdillatation.

      Hast Du das gerade erfunden oder meinst Du Dilatation?

  2. Hai!

    In Abhängigkeit des dir zur Verfügung stehenden Datenbanksystems und dessen Möglichkeiten (aka Features ;)) ... beschäftige dich vielleicht mal mit dem Bereich Full Text Search.

    Ansonsten 1 .... "Hallo%ist" hast du bereits probiert?

    Ansonsten 2 .... Du nimmst alle Datensätze, deren Spalte "content" mit "Hallo" beginnt und alle Datensätze, deren spallte ein "ist" beinhaltet und bildest daraus ne Schnittmenge.

    Frank

    P.S. Schnittmengen bildet man zum Bleistift sehr einfach mittels "INNER JOINS" auf gemeinsames Kriterium wie zum Bleistift die "Id" (bzw. Primärschlüssel) des Datensatzes.