Warum sind Wildcard-Suchen und Stemmer teilweise inkompatibel?
Mittels des Einsatzes von Wildcards können Suchen erweitert werden. Apache Solr unterstützt verschiedene Varianten von Wildcards. Beispielsweise kann mit variablen Buchstaben innerhalb eines Worts gesucht werden. Eine Suche nach w?ld führt beispielsweise zu Treffern bei Dokumenten, in denen die Begriffe wild oder wald vorkommen.
Ein weiterer typischer Einsatz von Wildcards ist die Verwendung von Trunkierung. Dabei wird nach Begriffen z. B. mit einem bestimmten Präfix gesucht (Solr unterstützt jedoch auch die Suche nach Suffixen oder Suchen mit Platzhaltern zwischen Zeichenketten). Sofern in Solr beispielsweise die Query herstell* formuliert wird, enthält die Trefferliste sowohl Dokumente, die den Begriff hersteller, als auch Dokumente, die den Begriff herstellung beinhalten. Durch Trunkierung kann zudem erreicht werden, dass Begriffe unabhängig vom Kasus gefunden werden. Infolge einer Suche nach hersteller* werden folglich nicht nur Dokumente in denen der hersteller im Nominativ vorkommt, sondern auch Dokumente mit dem Genitiv des herstellers.
Da für den Einsatz von Wildcards bzw. Trunkierung einige Grundkenntnisse seitens des Suchenden erforderlich sind, ermöglicht Apache Solr den Einsatz sogenannter Stemmer, die sowohl bei der Indexierung als auch bei der Verarbeitung von Querys eingesetzt werden können. Beispielsweise werden die Begriffe hersteller und herstellers beide bei der Indexierung auf den Wortstamm herstell reduziert. Gleiches geschieht bei der Verarbeitung von Querys, sodass bei einer Suche nach hersteller im Index nach herstell gesucht wird. Dadurch werden Dokumente unabhängig von den Wortformen der gesuchten Begriffe gefunden.
Bei der Implementierung der Suchapplikation ist jedoch zu beachten, dass die Verwendung von Wildcards oder Trunkierung nur begrenzt mit Stemming kompatibel sind. Wie bereits erläutert, würde der Begriff hersteller bei der Verwendung von Stemming bei der Indexierung auf den Stamm herstell reduziert. Bei einer Suche nach hersteller* ist es allerdings prinzipiell möglich, dass in der Menge der Begriffe, die durch hersteller* abgedeckt werden, Formen vorkommen, die nicht auf den Stamm herstell reduzierbar sind bzw. die auf einen anderen Stamm reduziert werden müssten. Der Stamm von hersteller* kann folglich nicht eindeutig bestimmt werden. Bei der Verwendung von Platzhaltern für einzelne Buchstaben tritt das gleiche Problem auf. Solr begegnet diesem Problem, indem bei Suchen mit Wildcards manche Analyseschritte nicht durchgeführt werden. Dazu zählt auch Stemming. Bei einer Suche nach hersteller* wird daher nach allen Zeichenfolgen im Index gesucht, die mit hersteller beginnen. Da der Begriff hersteller selbst jedoch bei der Indexierung auf herstell reduziert wurde, wird hierfür keine Übereinstimmung und somit auch kein Treffer erzielt.
Es ist daher zu empfehlen, bei der Planung zur Entwicklung einer Suchapplikation sorgfältig abzuwägen, ob Stemmer eingesetzt werden sollen, oder nicht. Darüber hinaus ist zu berücksichtigen, dass Apache Solr verschiedene Stemmer unterstützt, die unterschiedlich aggressiv arbeiten. Für die deutsche Sprache gibt es beispielsweise den GermanLightStemmer, der vergleichsweise nur wenige Veränderungen an Begriffen vornimmt.