Benutzer mit den meisten Antworten
SQL Volltextsuche findet bestimmte Wörter nicht

Frage
-
Hallo,
wir verwenden SQL Volltextsuche mit dem CONTAINS Schlüsselwort, was auch prinzipiell funktioniert. Jedoch wenn wir nach dem Wort "lang*" suchen (WHERE CONTAINS(Search, '"lang*"') dann wird kein Ergebnis zurück geliefert. Ist lang ggf. ein reserviertes Wort? Oder woran könnte es liegen?
Grüße
Andi
.NET Developer
Antworten
-
Hallo Andreas,
wie ein Wort abhängig von der Sprache indiziert / zur Suche verwendet wird, kannst Du ganz einfach über die sys.dm_fts_parser Funktion ermitteln.
SELECT * FROM sys.dm_fts_parser('lang', 1031, 0, 0) AS fts
und das Ergebnis lautet "Noise word", stellt man die LCID auf 1033 = English um, wird es ein "Exact Match"Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Stefan FalzModerator Sonntag, 22. Juni 2014 15:34
- Als Antwort markiert Ionut DumaModerator Donnerstag, 3. Juli 2014 12:54
Alle Antworten
-
Hallo Andi,
lang würde ich schon als Kandidaten für ein Stoppwort ansehgen. Schau dir doch mal die Inhalte der Stopplisten an.
SELECT * FROM sys.fulltext_stoplists SELECT * FROM sys.fulltext_stopwords
Für die Bearbeitung der Stopplisten siehe:
http://technet.microsoft.com/de-de/library/cc280871.aspx
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Mittwoch, 4. Juni 2014 11:36
-
Hallo Andreas,
wie ein Wort abhängig von der Sprache indiziert / zur Suche verwendet wird, kannst Du ganz einfach über die sys.dm_fts_parser Funktion ermitteln.
SELECT * FROM sys.dm_fts_parser('lang', 1031, 0, 0) AS fts
und das Ergebnis lautet "Noise word", stellt man die LCID auf 1033 = English um, wird es ein "Exact Match"Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Stefan FalzModerator Sonntag, 22. Juni 2014 15:34
- Als Antwort markiert Ionut DumaModerator Donnerstag, 3. Juli 2014 12:54
-
Und über sys.dm_fts_index_keywords kannst Du ermittel, welche Wörter indiziert sind:
SELECT * FROM sys.dm_fts_index_keywords(DB_ID('DatenbankName'), OBJECT_ID('TabelleMitFts')) AS KW WHERE KW.display_term LIKE 'lang%'
Olaf Helper
[ Blog] [ Xing] [ MVP] -
Korrigiert bzw. gelöschtes Kommentar.
- * ist für die Prefix-Suche valide, nur als Suffix-Suche nicht. Das ist aber ja auch nicht der Fall hier :)
Siehe dazu auch diesen Thread: http://social.msdn.microsoft.com/Forums/sqlserver/de-DE/9364f845-01df-45af-a175-01021db4fa01/sql-server-volltextsuche?forum=sqlserverde
Andreas Wolter (Blog | Twitter)
MCM - Microsoft Certified Master SQL Server 2008
MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
www.andreas-wolter.com | www.SarpedonQualityLab.com- Bearbeitet Andreas.WolterMicrosoft employee Mittwoch, 4. Juni 2014 14:56 Korrektur
-
* ist jedoch kein Wildcard-Platzhalter für die Suche mit Contains.
Doch, ist es, eine Präfix Suche: CONTAINS (Transact-SQL) => Examples => C. Using CONTAINS with <prefix_term> + D. Using CONTAINS and OR with <prefix_term>Olaf Helper
[ Blog] [ Xing] [ MVP] -
stimmt, da habe ich glatt Prefix und Suffix vertauscht. wie dumm. Ich ändere das gleich damit keiner drüber stolpert.
Zum Glück hatte ich es damals noch korrekt selber zitiert :-D
Andreas Wolter (Blog | Twitter)
MCM - Microsoft Certified Master SQL Server 2008
MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
www.andreas-wolter.com | www.SarpedonQualityLab.com