sql server - Warum gibt SQL Full Text Indexing keine Ergebnisse für Wörter zurück, die # enthalten?

Translate

Zum Beispiel sieht meine Abfrage mit SQL Server 2005 wie folgt aus:

SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#') 

Ich habe einen Volltextindex definiert, um die Spalte SearchField zu verwenden, die Ergebnisse zurückgibt, wenn:

SELECT * FROM Table WHERE SearchField LIKE '%c#%'

Ich glaube, # ist ein Sonderbuchstabe. Wie kann ich also zulassen, dass FREETEXT für die obige Abfrage korrekt funktioniert?

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Das Zeichen # wird als Interpunktion indiziert und daher ignoriert. Es sieht also so aus, als würden wir den Buchstaben C aus unseren Ignorierlisten für die Wortindizierung entfernen.

Habe es danach lokal getestet und die Indizes neu erstellt und ich bekomme Ergebnisse!

Betrachten Sie die Verwendung einer anderen Wortunterbrechungssprache in der indizierten Spalte, damit diese Sonderzeichen nicht ignoriert werden.

EDIT: Ich habe auch gefundendiese Information:

c # wird als c indiziert (wenn c nicht in Ihrer Rauschwortliste enthalten ist, lesen Sie später mehr über Rauschwortlisten), aber C # wird als C # indiziert (in SQL 2005 und SQL 2000 unter Win2003, unabhängig davon, ob C oder c in Ihrem Rauschen enthalten sind Wortliste). Es wird nicht nur C # als C # gespeichert, sondern auch ein Großbuchstabe gefolgt von #. Umgekehrt wird c ++ (und jeder andere Buchstabe in Kleinbuchstaben, gefolgt von einem ++) als c indiziert (unabhängig davon, ob c in Ihrer Rauschwortliste enthalten ist).

Quelle
Translate

Zitieren einer häufig replizierten Hilfeseite zur Abfragesprache des Indexdienstes:

Um speziell behandelte Zeichen wie &, |, ^, #, @, $, (,) in einer Abfrage zu verwenden, setzen Sie Ihre Abfrage in Anführungszeichen (“).

Soweit ich weiß, Volltextsuche inMSSQLwird auch vom Indexdienst ausgeführt, daher kann dies hilfreich sein.

Quelle