Announcement

Collapse
No announcement yet.

Volltextrecherche in MS-SQL mittels Contains

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

  • Volltextrecherche in MS-SQL mittels Contains

    Hallo,

    ich versuche in eien volltextindizierten Tabelle nach folgenen Begriff zu suchen "2. Weltkrieg" oder "II. Weltkrieg".
    Mittel Contains(Volltext, "2. Weltkrieg") erhalte ich zwar alle Spalten, die Weltkrieg entalten, aber leider auch Die, die nur "1. Weltkrieg" enthalten.
    Wenn ich versuche die Anweisung wie folg zu schreiben
    WHERE CONTAINS(Volltext, '"2." AND "Weltkrieg"') erhalte ich die Fehlermeldung "Eine Klausel der Abfrage enthielt ausschließlich ignorierte Wörter".
    Was muss ich machen, damit meine Anfrage nur alle Werte mit "2. Weltkrieg" zurückgibt.

    Mit freundlichen Grüßen

    Andre

  • #2
    Hi Andre,
    versuch doch mal:

    WHERE CONTAINS(Volltext, "2.") AND CONTAINS(Volltext, "Weltkrieg")

    Viele Grüße
    Richar

    Comment


    • #3
      Hallo Richard,
      Danke für deine Antwort. Leider ist das Ergebnis das Gleiche wie oben: Fehlermeldung "Eine Klausel der Abfrage enthielt ausschließlich ignorierte Wörter".
      Warscheinlich werden die Zahlenwerte nicht mit in den Index übernommen. Aber wie kann man dann trtzdem nach Ihnen recherchieren?
      Viele Grüße
      Andr

      Comment


      • #4
        Hallo Andre,
        vieleicht hilft dies hier:

        WHERE CONTAINS(Volltext, "Weltkrieg")
        AND (Volltext LIKE "*2. Weltkrieg*" OR Volltext LIKE "*II. Weltkrieg*")

        Das Zeichen * ist ein Platzhalter, ich kenne mich mit MS-SQL zwar nicht aus, bei MySQL ist es aber z.B. "%".

        Zur Erklärung: Du suchst nach dem Wort "Weltkrieg" im Feld "Volltext". Die langsame Suche innerhalb des Textes nach dem genauen Wortlaut wird dann nur noch auf die vorausgewählten Datensätze angewendet.

        Gruß
        Richar

        Comment


        • #5
          Hallo Richard,
          danke für deine Hilfe. Habe Deinen Vorschlag anwenden können. In MS-SQL ist der Platzhalter auch "%".
          MS-SQL setzt die Anfrage aber um in WHERE (Volltext LIKE '%2. Weltkrieg%' OR Volltext LIKE 'II. Weltkrieg%') AND CONTAINS(Volltext, 'Weltkrieg'), aber es klappt gut.

          Gruß
          Andr

          Comment


          • #6
            Hallo Andre,
            freut mich. Die Reihenfolge in der Where-Anweisung ist egal. Der Optimierer im SQL müßte die Felder aber korrekt über die Indizes ansprechen.

            Gruß
            Richar

            Comment

            Working...
            X