Announcement

Collapse
No announcement yet.

Satz zerlegen

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

  • Satz zerlegen

    Hallo,

    ich hätte eine Frage zum zerlegen eines Datensatzes, den ich in einer bestimmten Form speichern muss. Dabei sind Leerzeichen zu behalten und bestimmte Sonderzeichen, wie z.B. ein Minus, in in ein Leerzeichen umzuwandeln. Unterschreitet ein Wort eine bestimmte Länge, z.B. <=3, dann ist es zu ignorieren
    Bisher führe ich dies mittels Codierung in einem Programm aus, würde es jetzt aber gerne in einen Trigger übertragen.

    z.B.
    SELECT 'Ali-Baba und seine 40 Räuber. Kein Märchen?' FROM dual;

    "Ali-Baba" Minus soll ein Leerzeichn werde
    "Ali" wäre dann <= 3 und ist zu kurz
    "und", "40" sind zu kurz
    "." und "?" sollen weg

    Übrig bleiben sollte:
    "Baba seine Räuber Kein Märchen"

    Wie könnte das funktionieren?

    Danke
    Urwi

  • #2
    - Zeichenweise durch den Text laufen und Worte, die gültig sind, leerzeichengetrennt in einen neuen Text schreiben.
    - Zeichenweise durch den Text laufen und Zeichen entfernen, die ungültig sind.
    - Search und Replace für alle Zeichenumwandlungen, dann Worte kürzer 3 und mehrfache Leerzeichen entfernen.
    - Verwendung von regexp_replace oder anderen Splitfunktionen, die eine zeilenweise Ausgabe erzeugen.
    Gruß, defo

    Comment


    • #3
      Der regexp_replace Teil ist sicher der schwerste, hier mal ein Beispiel, das 1 bis 3-buchstabige Wörter, die von Zeilenanfang und anderen Zeichen eingeschlossen sind entfernt (regexp am Besten mit einfachen Beispielen ausprobieren...):
      Code:
      SELECT regexp_replace('Ali-Baba und seine 40 Räuber. Kein Märchen?','(^| )(\w{1,3}( |\.|\?|-))',' ') tx1 FROM dual;
      
      TX1
      -------------------
       Baba seine Räuber. Kein Märchen?

      Comment


      • #4
        Gibts auf der Oracle DB keinen Freitextsuche Index der sowas kann? Klingt sehr nach dem Thema Stopwords in der Freitextsuche. Falls ihr tatsächlich Richtung Freitextsuche wollt und eine etwas komfortablere (wenn auch etwas größere) Lösung sucht, dann schaut euch mal Elasticsearch an. Meine Erfahrungen damit sind sehr gut.

        Comment


        • #5
          Hallo,

          @defo: mehr oder weniger mache ich das so. Ich dachte, dass man das irgendwie elegant mit einer Funktion lösen kann!
          @jum: Es könnte in diese Richtung gehen, ich muß mir diese regexp-Funktion einmal genauer ansehen und damit experimentieren
          @fanderlf: Genau, ich will hier Text-Search anwenden, muß aber gewisse Regeln einhalten, um nicht zu viele Treffer zu haben.

          Danke an alle!
          Urwi

          Comment

          Working...
          X