Ich habe eine Textspalte mit verschiedenen Wörtern, die in Abkürzungen abgekürzt wurden. Beispielsweise könnte die Spalte anstelle von "versichert" "insd" enthalten. Ich verstehe, dass ich eine Thesaurus-Datei verwenden kann , um eine Liste von Synonymen zu erstellen, sodass eine Suche nach "insd" effektiv Zeilen zurückgeben kann, die sowohl "versichert" als auch "insd" enthalten. Perfekt.
Einige der anderen Abkürzungen in der Spalte enthalten jedoch "Sonderzeichen" wie einen Schrägstrich oder ein kaufmännisches Und, wie z.
t / p - Dritter o / s - andere Seite p / p - pro Person i & o - innen und außen
Gibt es eine Möglichkeit , Fragen zu stellen CONTAINS
oder zu FREETEXT
verstehen, die diese Wörter enthalten? Zum Beispiel:
SELECT *
FROM dbo.MyTable
WHERE FREETEXT(MyColumn, 't/p');
Ich habe die Thesaurus-Datei tsenu.xml
am richtigen Speicherort für die Instanz erstellt:
<XML ID = "Microsoft Search Thesaurus"> <thesaurus xmlns = "x-schema: tsSchema.xml"> <diakritisch_empfindlich> 0 </ diakritisch_empfindlich> <Erweiterung> <sub> versichert </ sub> <sub> insd </ sub> </ Expansion> <Erweiterung> <sub> t / p </ sub> <sub> Dritter </ sub> </ Expansion> <Erweiterung> <sub> o / s </ sub> <sub> andere Seite </ sub> </ Expansion> <Erweiterung> <sub> p / p </ sub> <sub> pro Person </ sub> </ Expansion> </ thesaurus> </ XML>
Und geladen mit EXEC sys.sp_fulltext_load_thesaurus_file 1033;
, jedoch liefert die Abfrage unvorhersehbare Ergebnisse.
quelle
LIKE
Operator zu verwenden: support.microsoft.com/en-us/help/200043/…Antworten:
Wenn Sie Wörter mit Sonderzeichen hinzufügen möchten, die als einzelnes Wort behandelt werden sollen, möchten Sie ein benutzerdefiniertes Wörterbuch erstellen.
Erstellen von benutzerdefinierten Wörterbüchern für spezielle Begriffe, die unverändert in SQL Server 2008-Volltextindizes indiziert werden sollen
Beachten Sie, dass benutzerdefinierte Wörterbücher nur eine begrenzte Größe haben. Je größer das Wörterbuch, desto langsamer kann der Volltext werden.
Benutzerdefinierte Wörterbücher eignen sich hervorragend, wenn Sie nur eine begrenzte Anzahl von Wörtern wie AT & T oder M & Ms hinzufügen müssen. Hierbei handelt es sich um Wörter mit Sonderzeichen, die möglicherweise immer wieder verwendet werden und als einzelnes Wort behandelt werden sollen, anstatt als Standardverhalten für das Brechen von Wörtern.
Benutzerdefinierte Wörterbücher eignen sich nicht für Wörter wie Teilenummern (z. B. JY-14562, PTW-14432 usw.), bei denen jede Zeile in einer Tabelle zu einem neuen Eintrag im benutzerdefinierten Wörterbuch führen würde. Möglicherweise haben Sie mehrere hunderttausend oder mehr eindeutige Teilenummern. Das wäre keine gute Verwendung für ein benutzerdefiniertes Wörterbuch. Wenn Sie diese Art von Verhalten benötigen, ist es besser, einen eigenen Wortbrecher zu schreiben. Das Erstellen von Wortunterbrechern ist weder gut dokumentiert noch einfach zu erstellen. Sie können jedoch entscheiden, wie Wörter gebrochen werden sollen, wenn Sie auf Sonderzeichen stoßen.
quelle