2016-05-09 11 views
1

Ich habe eine Tabelle mit einem Volltextindex für eine seiner Spalten. Der Text in dieser Spalte kann Zeilenumbrüche "\ r \ n" enthalten, z.Ignorieren Newline-Zeichen beim Ausführen einer Volltextsuche in MS SQL Server

line1\r\nline2 

Derzeit bin ich mit den folgenden SQL-

SELECT * FROM SomeTable WHERE CONTAINS(TextValue, '"*line1*"') 

die erfolgreich passt zu suchen. Meine Benutzer möchten jedoch

als einen Suchbegriff eingeben, der auch erfolgreich übereinstimmen sollte. Mit anderen Worten, ich möchte, dass die Suche "\ r" und "\ n" ignoriert.

Ich habe

versucht
SELECT * FROM civ.MetadataFieldValues WHERE CONTAINS(REPLACE(REPLACE(TextValue, CHAR(13), ' '), CHAR(10), ''), '"*line1 line2*"') 

aber dies gibt den Fehler

Incorrect syntax near '('. 

Gibt es eine Möglichkeit, dies mit ENTHÄLT zu erreichen?

+0

sollte nicht die Volltextsuche newline-, whitespace- und fillter-Wörter wie "und, the, a, etc" standardmäßig ignorieren? – Kritner

+0

Funktioniert nicht so. Ich analysiere Wörter. – Paparazzi

+0

Wird "line1 line2" als Eingabeparameter an die Abfrage übergeben (vermutlich ein Proc)? – EastOfJupiter

Antwort

1

CONTAINS verwendet einen Volltextindex. Aus diesem Grund würde der Vorteil des Volltextindex zunichte gemacht, wenn Sie den Inhalt des Feldes mit einer Funktion vor der Suche ändern würden.

Es ist möglich, einen Volltextindex für eine Ansicht zu erstellen. Daher würde ich empfehlen, eine Ansicht mit einem zweiten Feld zu erstellen, das genau den gleichen Inhalt wie das aktuell gesuchte Feld enthält, außer dass Sie unerwünschte Sonderzeichen durch Leerzeichen oder etwas anderes harmloses ersetzen würden. Sie können dann einen Volltextindex für das neue Feld in der Ansicht erstellen und CONTAINS für dieses Feld in der Ansicht verwenden.

+0

Danke. Was Sie über den Vorteil gesagt haben, dass der Index annulliert wird, wenn Sie den Wert vor der Suche ändern, ist sinnvoll. Dies ist wahrscheinlich der Grund, warum meine obige SQL-Anweisung nicht funktioniert. Ich werde die von Ihnen vorgeschlagene Ansichtsoption in Erwägung ziehen oder vielleicht sogar einen anderen Weg finden, um das Problem vollständig zu vermeiden. – Kyllan