Announcement

Collapse
No announcement yet.

Suchen nach mehreren Begriffen in einem Feld

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

  • Suchen nach mehreren Begriffen in einem Feld

    Hallo alle zusammen,

    mein Problem sieht wie folgt aus:
    <p>
    Ich bekomme einen string 'Programmieren Datenbank Anfänger'
    Nun will ich in einem Feld nach diesen drei Begriffen suchen, ich will aber nicht das genau der String 'Programmieren Datenbank Anfänger' steht sondern nach irgendwo in dem Feld 'Programmieren' irgendwo 'Datenbank' und irgendwo 'Anfänger' ich könnte das jetzt mit vielen AND Abfragen ineinander machen: <p><pre>

    select * from Tabelle where Feld like '%Programmieren%' and Feld like '%Datenbank%' and Feld like '%Anfänger%'

    </pre>
    <p>
    Da es aber noch mehr Bedingungen habe möchte ich das nicht so machen, weil die Abfrage dadurch sehr langsam wird. Hat jemand eine Idee wie ich das machen könnte??
    <p>
    Dank Euch eure Nausi

  • #2
    Hallo Nausi,

    wenn Du die Reihenfloge festgelegt hast, kannst Du die 3 Begriffe auch in einen Suchbegriff packen:

    select * from Tabelle where Feld like '%Programmieren%Datenbank%Anfänger%'

    dann muß nur in einer Bedingung sehr aufwendig geprüft werden. Wenn Du solche Abfragen aber sehr oft verwenden musst, stört die lange Suchdauer schon. Du solltest Dir dann Gedanken machen, ob Du die Tabellen in Deiner Datenbank nicht anders aufbaust.

    Gruß Usch

    Comment


    • #3
      Hallo Uschi

      danke für deine Hilfe, aber leider kann ich die Reihenfolge nicht festlegen. Auch habe ich keine andere Idee wie ich die Datenbank aufbauen sollte. Es handelt sich dabei um eine Buchverwaltung. Es gibt ein Feld buchrücken in dem der Buchrücken abgeschrieben wurde und in diesem soll nach bestimmten Begriffen gesucht werden. Außerdem soll auch noch nach bestimmten Autoren, Verlag usw. gesucht werden, ich habe Bereits einen Index auf die Tabellen gelegt. Aber wie ich sie anderst aufbauen weis ich leider nicht

      Gruß Naus

      Comment


      • #4
        Hallo Nausi,<BR>
        sobald eine InTextSuche (also like '%xxx%' anstatt like 'xxx%' gestartet wird, sucht Interbase immer sequentiell.<BR>
        Wenn es wirklich mit containing oder so zu langsam ist, dann ist es sicher aufwändiger.<BR>
        Ich würde dann in einer separaten Tabelle alle Begriffe des Feldes speichern. Das kann man über eine Stored Procedure und Insert, Update und Delete - Trigger realisieren.<BR>
        Nach einem Insert, Delete oder Update sollte die Procedure also eine separate Tabelle mit den Wörtern bilden.<BR>
        Ist zwar etwas Arbeit, aber realisierbar.<BR>
        Die Suche wüede dann über einen Subselect oder ebenfalls über eine Stored Procedure laufen.<BR>
        Es gibt da noch sogenannte Fulltext - Suchroutinen von verschiedenen Anbietern. Aber damit habe ich keine Erfahrung.<BR><BR>
        Gruss, Fran

        Comment


        • #5
          hallo zusammen,
          bin gerade an einer volltextsuche fuer eine access datenbank. habe noch keine schlauen befehle gefunden.

          wenn jemand weiss wie eine volltexsuche zu realisieren ist, bin ich um jeden input dankbar.

          greets luka

          Comment

          Working...
          X