Benutzer mit den meisten Antworten
SQL Server Volltextindex und Umlaute

Frage
-
Hallo,
in dem SQL Server ist die Volltextengine aktiviert. Es gibt zwei Datensätze.
Datensatz 1: "vorname"
Datensatz 2: "vörname"
Suche ich nach "vor" werden beide Datensätze geliefert. Auch bei der Suche nach "vör" werden beide geliefert.
Kann mir bitte jemand die Ursache hierfür geben? Besteht die Möglichkeit, dieses Verhalten zu beeinflussen, so dass bei der Suche nach "vör" nur der Datensatz "vörname" und "vor" nur "vorname" liefert?
Danke und viele Grüße,
Christian
Antworten
-
- Als Antwort markiert ChristianHavelDE Donnerstag, 26. September 2019 07:57
-
Hallo Christian,
schau mal in Olafs Screenshot. Dort findest Du oben einen Button "Skript". Ändere die Einstellung wie gewünscht und klick dann auf diesen Button, dann wird das SQL Skript erzeugt, dass die Änderung vornimmt.
Dieses Skript kannst Du dann auch über deine Anwendung (ausreichende Berechtigungen vorausgesetzt) auch auf dem Datenbankserver ausführen.
Diesen Button gibt es übrigens in den allermeisten Einstellungsdialogen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort markiert ChristianHavelDE Donnerstag, 26. September 2019 07:57
-
Ist die Option "Unterscheidung nach Akzent / Mit Unterscheidung" mittels SQL konfigurierbar?
Klar:
ALTER FULLTEXT CATALOG [FTSKatalog] REBUILD WITH ACCENT_SENSITIVITY = ON;
Der Neuaufbau des Kataloges läuft asynchron, d.h. das Statement ist sofort fertig, die ersten Suchergebnisse erhält man aber erst mit der Zeit.Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort markiert ChristianHavelDE Donnerstag, 26. September 2019 13:46
Alle Antworten
-
Hallo Christian,
Du musst den Volltext-Katalog mit der Option Akzent-sensitive anlegen, Beispiel für das Ergebnis dann
select display_term from sys.dm_fts_parser(N'vorname', 1031, 0, 0) select display_term from sys.dm_fts_parser(N'vörname', 1031, 0, 0) select display_term from sys.dm_fts_parser(N'vorname', 1031, 0, 1) select display_term from sys.dm_fts_parser(N'vörname', 1031, 0, 1)
der letzte Parameter steht für akzent-sensitive und die letzten beiden Abfragen liefern das gewünscht ErgebnisOlaf Helper
[ Blog] [ Xing] [ MVP] -
Hallo Olaf,
herzlichen Dank für deine schnelle Hilfe!
Kannst du mich bitte noch unterstützen bei der Nutzung der Funktion dm_fts_parser?
Wenn ich aktuell in meinem C# Programm Daten wie folgt abrufe.
using (cmd = new SqlCommand {Connection = dbConn}) { cmd.CommandText = "SELECT * FROM MyTable where [HIER NOCH PARAMETER]" cmd.Parameters.AddRange(ListOfMySqlParameters); var reader = cmd.ExecuteReader(); do { bool hasMore = reader.Read(); // Hier werden die Daten ausgelesen } }
Wo sollte dann bitte der Aufruf von dm_fts_parser erfolgen?
Danke und viele Grüße,
Christian -
Das schränkt die Suchmöglichkeiten allerdings nicht unerheblich ein, da man bei Volltextsuchen auch gerne nach Ähnlichkeiten suchen möchte insbesonders bei Tippfehlern und Duplikatsuchen, was bei sensitiven Indizes dann nicht mehr oder nur erschwert möglich ist.
-
- Als Antwort markiert ChristianHavelDE Donnerstag, 26. September 2019 07:57
-
Guten Morgen Olaf,
ich kann mich nur nochmals für deine Hilfe herzlichst bedanken.
Ist die Option "Unterscheidung nach Akzent / Mit Unterscheidung" mittels SQL konfigurierbar? D.h. bei bereits laufenden Systemen wird ein Update der .NET Anwendung eingespielt, diese prüft mittels SQL Query ob die Option aktiviert ist und falls nicht aktiviert sie diese.
Viele Grüße
Christian -
Hallo Christian,
schau mal in Olafs Screenshot. Dort findest Du oben einen Button "Skript". Ändere die Einstellung wie gewünscht und klick dann auf diesen Button, dann wird das SQL Skript erzeugt, dass die Änderung vornimmt.
Dieses Skript kannst Du dann auch über deine Anwendung (ausreichende Berechtigungen vorausgesetzt) auch auf dem Datenbankserver ausführen.
Diesen Button gibt es übrigens in den allermeisten Einstellungsdialogen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort markiert ChristianHavelDE Donnerstag, 26. September 2019 07:57
-
Ist die Option "Unterscheidung nach Akzent / Mit Unterscheidung" mittels SQL konfigurierbar?
Klar:
ALTER FULLTEXT CATALOG [FTSKatalog] REBUILD WITH ACCENT_SENSITIVITY = ON;
Der Neuaufbau des Kataloges läuft asynchron, d.h. das Statement ist sofort fertig, die ersten Suchergebnisse erhält man aber erst mit der Zeit.Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort markiert ChristianHavelDE Donnerstag, 26. September 2019 13:46