match() against() *grml*

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

  • match() against() *grml*

    hoi!

    ich stelle mal wieder ne sql-lücke bei mir fest ich mache da ne fulltext-abfrage unter mysql. ca. so:
    Code:
     
    select * from where match(feld_1,feld2) against ('suchbegriff')
    damit durchsuche ich verschiedene texte mit unternehmensprofilen. auf einer steht zum bleistift "mittagstisch", und ich suche nach "mittag". was passiert? er findet es nicht, weil es in einem anderen wort steht. wie kriege ich das hin? bitte jetzt nicht like%bla bla %. da will ich von weg
    und was hat er gegen das wort "first" im against query? obwohl das wort dort steht, wird es nicht gefunden ...

    thx
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

  • #2
    Re: match() against() *grml*

    dir ist aber schon klar, dass match against eigentlich nur einen zahlenwert für die relevanz eines suchergebnisses zurückgibt...?

    und hast du das hier beachtet, zitat manual:

    Damit MATCH ... AGAINST() funktioniert, muss zuerst ein FULLTEXT-Index erzeugt werden.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      ich blick da auch noch nicht ganz durch.

      Aber das liefert ein bisschen mehr zurück als den Zahlenwert, oder wie?

      Kommentar


      • #4
        Re: Re: match() against() *grml*

        Original geschrieben von wahsaga
        dir ist aber schon klar, dass match against eigentlich nur einen zahlenwert für die relevanz eines suchergebnisses zurückgibt...?


        Damit MATCH ... AGAINST() funktioniert, muss zuerst ein FULLTEXT-Index erzeugt werden.
        ich bin ja nicht blöd

        hier mal der komplette string:
        Code:
        select * from ti_vkarte a, ti_vstamm b where (( match(a.vText,a.vtaetig,a.vkeys,vsuchtext) against('%reisebüro%') ) or ( match(b.firma) against('%reisebüro%') )) and a.idmall=1 and vaktiv > 0 and a.idvstamm=b.idvstamm
        wie gesagt, der findet auch was, und zeigt es auch an. nur eben nicht immer. ...
        h.a.n.d.
        Schmalle

        http://impressed.by
        http://blog.schmalenberger.it



        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
        ... nur ohne :-)

        Kommentar


        • #5
          was heißt denn nicht immer?

          Kommentar


          • #6
            Ich würde auf jeden Fall mal das Prozent weglassen ... das gehört zum LIKE - Operator ...

            Laß Dir die Werte mal mit SELECT match(a.vText,a.vtaetig,a.vkeys,vsuchtext) against('reisebüro') ausgeben ... manchmal hilfts wenn man sieht was MySQL Macht ...
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              die "%" sind schon weg. bringt aber auch nix.

              beispiel:
              ____________

              text: "wir sind das first reisebüro in der strasse bal bla in hamburg";
              suche nach "first" --> ergibt 0
              suche nach reisebüro ergibt 1 ergebnis mit ausgabe über fetch_array()
              suche nach reise ergibt wieder 0

              ???
              EDIT:
              ich habe den string per echo ausgegeben, und dann herkopiert @goth
              h.a.n.d.
              Schmalle

              http://impressed.by
              http://blog.schmalenberger.it



              Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
              ... nur ohne :-)

              Kommentar


              • #8
                Meines Wissens sucht die FULLTEXT-Suche eh' nur nach ganzen Worten ... ich habe in der Doku nichts zu "Teilbegriffen" oder sowas gefunden:

                Deutsch

                Englisch
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  es ist ja nicht so dass ich nicht gesucht hätte ich würde ja nicht fragen, wenn ich es selbst beantworten könnte

                  soll heissen, ich muss wirklich bei like bleiben?
                  h.a.n.d.
                  Schmalle

                  http://impressed.by
                  http://blog.schmalenberger.it



                  Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                  ... nur ohne :-)

                  Kommentar


                  • #10
                    gibt es denn eine möglichkeit eine "normale" abfrage ohne match() nach relevanz zu sortieren. also die werte oben stehen zu lassen, in denen das suchwort am häufigsten vokommt?
                    h.a.n.d.
                    Schmalle

                    http://impressed.by
                    http://blog.schmalenberger.it



                    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                    ... nur ohne :-)

                    Kommentar


                    • #11
                      Hmm, wüsste da nichts.

                      ich versuch bei meinem katalog (ist gar nicht meiner ) auch ne volltextsuche mit match etc zu machen. er sortiert mir das auch ganz schön und so weiter. aber angeblich sollen da auch sachen verschluckt werden *zuck*

                      Kommentar


                      • #12
                        ich bin wieder zu like übergegangen. da wurde ein wenig viel geschluckt ich glaube ich muss mal ein sql buch lesen ... haste n tipp?
                        h.a.n.d.
                        Schmalle

                        http://impressed.by
                        http://blog.schmalenberger.it



                        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                        ... nur ohne :-)

                        Kommentar


                        • #13
                          Ich hab gerade das gleiche Problem ...

                          live: eine Tabelle mit ein paar Tausend Datensätzen - nix find
                          Test-DB: eine mit vier Datensätzen

                          Code:
                          ID title   description
                          1  test 1  blablablablabla ... nagelneu blubbblah ...
                          2  test 2  blablabla neuwertig blablabla
                          3  test 3  dingens - nagelneu
                          4  test 4  nagelneu
                          Die Query:
                          Code:
                          select title, description
                            , MATCH (description) AGAINST ('nagelneu')
                            , description like '%nagelneu%'
                          from tabelle
                          liefert mir
                          Code:
                          ID match like
                          1  0     1
                          2  0     0
                          3  0     1
                          4  0     1
                          Fazit:
                          LIKE bringt den (live)Server zum Absturz
                          MATCH findet nichts

                          und nu?
                          mein Sport: mein Frühstück: meine Arbeit:

                          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                          Kommentar


                          • #14
                            ich hab seither noch einige male mit match() herumgefuchtelt, aber keine brauchbaren ergebnisse erzielen können. warum auch immer er in deiner text db gar nichts findet. kann eigentlich ned sein. am fehlenden index kann es och ned liegen, sonst meckert mysql ja rum ...

                            bezüglich live-server: eine etwas unsaubere lösung ... von mir eben

                            arbeite mit limit, und mach mehere selects via LIKE. fasse alle arrays zusammen, nd lasse dann die ergebnisse ausgeben. wenn das noch immer zu langsam ist, musste wohl nen refresh einbauchen, und die vorhergehenden ergebnisse in session "zwischenlagern" oder so ...
                            h.a.n.d.
                            Schmalle

                            http://impressed.by
                            http://blog.schmalenberger.it



                            Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                            ... nur ohne :-)

                            Kommentar


                            • #15
                              Original geschrieben von Schmalle
                              warum auch immer er in deiner text db gar nichts findet.
                              in dem beispiel ist das suchwort in mehr als der hälfte der datensätze enthalten ...
                              Zuletzt geändert von wahsaga; 10.07.2003, 12:51.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X