Benutzer mit den meisten Antworten
SQL Suchfunktion fehlerhaft

Frage
-
Hallo,
für eine Suchfunktion in meiner Datenbankanwendung habe ich folgende Prozedur angelegt:
ALTER proc [dbo].[spKundensuche] @strSuche nvarchar(50) = '%', @intType int, @intVertrieb int AS Set @strSuche = '"' + @strSuche + '*"' IF isnull(@intVertrieb,0) = 0 Begin SELECT TOP 100 dbo.Kundenliste.ID_Kunde, dbo.Kundenliste.Firmenname, dbo.Kundenliste.PLZ, dbo.Kundenliste.Ort, dbo.Kundenliste.Anrede, dbo.Kundenliste.Nachname, dbo.Kundenliste.Vorname, dbo.Kundenliste.Notizen, dbo.Kundenliste.Type, dbo.Kundenliste.IrisSubType, dbo.tbl_Typen.TypName, dbo.Kundenliste.VertriebsID, dbo.Kundenliste.Titel FROM dbo.Kundenliste LEFT OUTER JOIN dbo.tbl_Typen ON dbo.Kundenliste.IrisSubType = dbo.tbl_Typen.SubTyp AND dbo.Kundenliste.Type = dbo.tbl_Typen.Typ Inner Join CONTAINSTABLE(Kundenliste, *, @strSuche) as Key_tBL ON Kundenliste.id_Kunde = key_tbl.[Key] WHERE Kundenliste.Type = @intType ORDER BY key_tbl.rank desc
Leider funktioniert die Suche aber nicht vernünftig.
Suche ich z.B. nach der 'Agentur für Arbeit' so erhalte ich Ergebnisse unter dem Suchbegriff 'Agentur'. Sobald ich aber suche nach 'Agentur für' wird gar nix mehr angezeigt. Dann habe ich eine Firma Namens 'Oh, my Music' Suche ich nach 'Oh,' wird mir u.a. 'Aldi Einkauf GmbH & Co. OHG' angezeigt, nicht aber die Firma Oh, my Music!. Suche ich nach 'Oh, my' wird gar nix mehr angezeigt.
Solche Beispiele könnte ich ewig aufzählen. Ich bin bei weitem kein Experte was SQL angeht und freue mich, dass ich überhaupt eine Suche hinbekommen habe, aber es ist natürlich nicht toll, wenn sie nicht richtig funktioniert. Ich hoffe daher, dass jemand hier helfen kann.
In der Tabelle 'Kundenliste' sind die entsprechenden Spalten für den Volltextindex aktiviert. Sprache für Wörtererkennung steht auf Deutsch und die Statistische Semantik ist aktiviert. Weiterhin habe ich eine Datenbank namens 'semanticsdb'. Diese scheint allerdings leer zu sein, zumindest zeigen die Ordner in meinem Managementstudio keinen Inhalt an.
So, genug Text.. Ich hoffe es kann jemand helfen.
Lieben Dank schon mal.
datekk
.::datekk::.
- Bearbeitet datekk2 Freitag, 18. Januar 2019 15:08
Antworten
-
Dann habe ich eine Firma Namens 'Oh, my Music! publisher UG' Suche ich nach 'Oh,' wird mir u.a. 'Aldi Einkauf GmbH & Co. OHG' angezeigt, nicht aber die Firma Oh, my Music!. Suche ich nach 'Oh, my' wird gar nix mehr angezeigt
Hallo,
beim SQL Server Volltextindex gibt es bereits im Standard eine sogenannte Stopliste mit "Noise Words", die nicht indiziert werden sollen, wie z.B. "der/die/das", weil das im jeden Satz vorkommt; "Oh" ist auch so ein Noise Word, genau wie für. Die sind entsprechend nicht indiziert und man kann danach nicht suchen. Kannst Du mit sys.dm_fts_parser (Transact-SQL) überpüfen:
Die Verwendung der Stoplist kann man im FTS Index abstellen. Siehe auch Configure and Manage Stopwords and Stoplists for Full-Text Search
Olaf Helper
[ Blog] [ Xing] [ MVP]- Bearbeitet Olaf HelperMVP Freitag, 18. Januar 2019 09:53
- Als Antwort vorgeschlagen Christoph Muthmann Freitag, 18. Januar 2019 11:08
- Als Antwort markiert datekk2 Freitag, 18. Januar 2019 15:08
Alle Antworten
-
Dann habe ich eine Firma Namens 'Oh, my Music! publisher UG' Suche ich nach 'Oh,' wird mir u.a. 'Aldi Einkauf GmbH & Co. OHG' angezeigt, nicht aber die Firma Oh, my Music!. Suche ich nach 'Oh, my' wird gar nix mehr angezeigt
Hallo,
beim SQL Server Volltextindex gibt es bereits im Standard eine sogenannte Stopliste mit "Noise Words", die nicht indiziert werden sollen, wie z.B. "der/die/das", weil das im jeden Satz vorkommt; "Oh" ist auch so ein Noise Word, genau wie für. Die sind entsprechend nicht indiziert und man kann danach nicht suchen. Kannst Du mit sys.dm_fts_parser (Transact-SQL) überpüfen:
Die Verwendung der Stoplist kann man im FTS Index abstellen. Siehe auch Configure and Manage Stopwords and Stoplists for Full-Text Search
Olaf Helper
[ Blog] [ Xing] [ MVP]- Bearbeitet Olaf HelperMVP Freitag, 18. Januar 2019 09:53
- Als Antwort vorgeschlagen Christoph Muthmann Freitag, 18. Januar 2019 11:08
- Als Antwort markiert datekk2 Freitag, 18. Januar 2019 15:08