Announcement

Collapse
No announcement yet.

Volltextsuche wie Google mit Interbase ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Volltextsuche wie Google mit Interbase ?

    Hallo, <br>

    ist es möglich eine Volltextsuche über alle Felder mit Interbase wie in Google zu erstellen ?<br>
    Suche nach ähnlichen bzw. exakten parametern ?<br>

    Volker

  • #2
    Hallo,

    es gibt Befehler wie starting with und contains. Wenn jedoch viele Felder in Frage kommen wird es schwierig. Die Abfrage wird langsam, wenn keine Indizes verwendet werden, sind auf allen Feldern Indizes, wird das Insert langsam, wil der Index eingetragen werden muß.

    Die dauerhaftere Lösung ist, eine Wortliste mit Index aufzustellen, gesucht wird nur in der Wortliste, die dann auf die Tabellenzeile verweist.

    Das Abgrasen der Liste kann durch 2-fach oder 3-fach Abfragen beschleunigt werden.

    Ich habe hier so etwas eingesetzt, um Dokumente aus Reparaturlisten zu finden.

    Gruß Günte

    Comment


    • #3
      Hi, <br>
      danke für den Tipp, d.h ich erstelle nun eine eigene Table z.b<br>

      ID: Integer
      TEXT: varchar(300)
      REF_ID: INTEGER --> Referenz Id auf die Main_Table wo alle Felder sich befinden.
      ...
      <br>
      Wenn ich die Daten in der DB ablege speicher ich jeden parameter von jedem Feld in dieser Tabelle ?<br>
      Naja "Starting" ist ja nur für den Anfangsbuchstaben, ich bräuchte auch einen für ähnliche parameter ... . LIKE geht ja in diesem Fall ja auch nicht .
      <br>
      Gruss Volke

      Comment


      • #4
        Hallo Volker,

        ich meinte :

        where text containing :Paramter1
        or Text containig :Paramter2
        or Text containing parameter3

        je nach dem, wievel Suchwörter Du zulassen willst.

        Gruß Günte

        Comment


        • #5
          Hi Günter,<br>
          ah ja so kann ich es auch machen und Containing sucht ähnlichkeiten ?Falls einer sich verschrieben hat etc. ?<br>

          Antwort kannst auch direkt an mich schreiben <br>
          [email protected]

          Gruss Volke

          Comment


          • #6
            Hallo,

            Es hängt davon ab, wieviel Service geboten werden soll. Nach dem Abschicken der Anfrage kann diese analysiert werden. zB doppelte Konsonanten am Wortanfang, Auschluß bestimmter Zeichenfolgen etc.

            Als Vergleich, was nötig ist, läßt sich gut die Autotextkorrektur von Word und Wordperfect durchforsten, da diese zum Teil auf Analysen typischer Texte erstellt worden sind.

            Ist eine Sache des Aufwandes. Bei google kommt es auch nicht immer zu vernünften Zusatzvorschlägen )

            gruß Günte

            Comment


            • #7
              Hi,<br>
              naja habe die soundex funktion implementiert und war eigentlich entäuscht von dem Ergebnis.<br>
              Gibt es keinen anderen Algorithmus für eine solche Suche ?
              <br>
              So große Ansprüche stelle ich ja wirklich nicht :P <br><br>
              Gruss volke

              Comment


              • #8
                Hallo,

                hier im Laden kommen wir mit 6 Fehlerausschlüssen zurecht. Das lässt sich noch in die Abfragen ordentlich Implementieren und das Tempo ist bei IB gut.

                ( Doppelte Konsonanten, Doppelete Vokale, H, i<>j, ch<>sch, k<>ck ).

                Gruß Günte

                Comment


                • #9
                  Hi, <br>
                  wie kann ich das implementieren ?

                  <br><br>
                  Volke

                  Comment


                  • #10
                    Hallo,

                    a. Stringliste erzeugen
                    SuchVariation : array[1..20] of string(40)

                    b. Suchwort abfragen

                    c. Variationen erzeugen :
                    z.B. ohne H :

                    <pre>
                    var
                    Suchwort, ergebnis,alt : string;
                    x,y,pos : integer;

                    begin
                    suchwort := trim(Eingabe) (aus irgendeiner Maske)
                    x := length(suchwort);
                    pos := 1;
                    ergebnis := copy(1,1,suchwort);
                    alt := upper(ergebnis);
                    for y := 2 to x do
                    begin
                    // wenn kein h, oder alt = c dann hinzufügen
                    if ((upper(copy(y,1,suchwort)) <> 'H')
                    or (alt = 'C')) then
                    begin
                    ergebnis := ergebnis+copy(y,1,suchwort);
                    alt := upper(copy(y,1,suchwort));
                    end;
                    end;
                    Suchvariation[1] := ergebnis;
                    end;
                    </pre>

                    d. SQL mit Parameter aufrufen : z.B:
                    <pre>
                    select D.Ergebnistext
                    from Datenbank D
                    join Suchindex s on d.id = s.ID
                    where upper(s.text) containing upper(:Par1)
                    or upper(s.text) containing upper(:Par2)
                    etc.
                    </pre>

                    Gruß Günte

                    Comment

                    Working...
                    X