Microsoft Indexing Service findet (scheinbar) nicht vorhandene Suchbegriffe

Beschreibung

Beim Suchen nach Suchbegriffen mit dem Indexing Service von Microsoft (auch „Index Server“ genannt) tritt das Phänomen auf, daß auch Dokumente gefunden werden die den Suchbegriff scheinbar gar nicht enthalten.

Beispielsweise wurde nach „preisliste“ oder „kombinationsbeispiel“ gesucht und eben solche scheinbar falschen Dokumente gefunden. Hingegen haben Suchanfragen nach Wörtern wie „haus“ oder „auto“ nur korrekte Dokumente geliefert.

Ursache

Ich vermute sehr, dass der Indexing Service bei zusammengesetzten Wörtern die Wörter aufteilt und sucht als wäre es eine Suche nach den einzelnen Wörtern (gibt es da in der Grammatik Regeln um dies automatisch durchzuführen?).

Also beispielsweise bei der Suche nach „preisliste“ führt der Indexing Service eine Suchanfrage aus nach Dokumenten die „preis“ oder „liste“ oder „preisliste“ als Suchbegriffe enthalten.

Deswegen werden scheinbar auch „falsche“ Dokumente gefunden.

Lösung

Als einzigen Workaround habe ich die sogenannten „Content Queries“ gefunden.

Wenn mit einem Suchbegriff nun statt beispielsweise nach „preisliste“ über die erweitere Syntax nach „{phrase} preisliste {/phrase}“ gesucht wird, so werden tatsächlich auch nur Dokumente gefunden die direkt den Begriff „preisliste“ enthalten.

Ich bin mir unsicher ob das ein sauberes Vorgehen ist oder eher ein „geht so, ist aber eigentlich für was anderes gedacht gewesen“. Aber es funktioniert in allen bisherigen Tests :-).

Ergänzung 2006-03-03: Im Artikel „Creating Search Pages with Index Server and .NET“ auf CodeProject schreibt Heath Stewart über die „CONTAINS“- und „FREETEXT“-Prädikate. Ggf. auch eine Alternative.