SharePoint-Suche: Verarbeitung von Dateinamen mit Unterstrichen

SharePoint-Suche: Verarbeitung von Dateinamen mit Unterstrichen

Wir verwenden SharePoint Server 2007, um Mitarbeitern die Suche in Netzwerkdateifreigaben zu ermöglichen, aber es scheint, dass Unterstriche in Dateinamen bei der Indizierung der Dateien nicht als Worttrennzeichen behandelt werden.

Als Ergebnis eine Suche nachSchokoladeWille:

  • übereinstimmen "SchokoladeMilchshake.doc"
  • aber nicht passend zu „chocolate_cake.doc“

(Das ist natürlich ein vereinfachtes Beispiel; in der PraxisInhaltder zweiten Datei könnte das Wort „Schokolade“ enthalten und mit diesem statt mit dem Dateinamen übereinstimmen. Aber das Problem selbst ist real genug, denn ein häufiges Szenario in einer Unternehmensumgebung ist, dass ein Benutzer den Teilnamen der gesuchten Datei kennt und erwartet, passende Dateinamen oben in den Suchergebnissen zu sehen. Und die Verwendung von Unterstrichen in Dateinamen ist in unserem Unternehmen eine weit verbreitete Konvention).

Unterstriche werden im Dateiinhalt auch nicht als Worttrennzeichen behandelt, obwohl dies für uns weniger besorgniserregend ist. Die Grundursache dieses Problems istmöglicherweiseim Zusammenhang mit dem Verhalten der von SharePoint verwendeten Wörtertrenner (also den sprachspezifischen DLLs, die die IWorkBreaker-Schnittstelle implementieren), obwohl ich dies noch nicht bestätigt habe.

Kennt jemand eine Problemumgehung für dieses Problem? Ich habe es auch mit Search Server 2008 Express getestet (das auf derselben Technologie basiert) und es ist auch betroffen. Ich weiß nicht, ob das Problem in SharePoint 2010 behoben ist oder nicht.

Antwort1

Ich glaube nicht, dass Unterstriche als Trennzeichen behandelt werden, und es gibt ein bisschen Verkehr auf social.technet, der dies zu bestätigen scheint. Wenn (da) das der Fall ist, benötigen Sie eine Teil-/Platzhaltersuche, um „Schokolade“ aus „Schokoladenkuchen.doc“ abzugleichen, was das Kernresultat-Webpart nicht tut. Es gibt jedoch einen CodeplexWebpartfür 2007, das genau das tut.

Zu Ihrer Information, dieVersion 2010dieses gleichen Webparts weist darauf hin, dass SharePoint 2010 Platzhaltersuchen hinzufügt, sofern der Benutzer das Sternchen eingibt.

Antwort2

Ich habe bestätigt, dass die Wörtertrennung die Behandlung von Unterstrichen sowohl für Dokumentinhalte als auch für Dateinamen bestimmt. Wörtertrennungen werden in der Registrierung sprachspezifisch konfiguriert.

Wörtertrenner werden als ActiveX-Steuerelemente implementiert und theoretisch sollte es möglich sein, eigene zu schreiben (das Microsoft Platform SDK für Windows XP enthält ein Beispiel, „lrsample“), aber mir fehlen die Tools dafür. Es scheint, dass viele der von Microsoft bereitgestellten Wörtertrenner Unterstriche als Teil eines Wortes behandeln, aber ich habe einen gefunden, der bei Unterstrichen trennt: Version 2 des Wörtertrenners für vereinfachtes Chinesisch (chsbrkr.dll – 1.677.824 Bytes). Beachten Sie, dass sich dieses Verhalten von Version 3 des Wörtertrenners für vereinfachtes Chinesisch unterscheidet, die mit Search Server 2008 Express und wahrscheinlich auch mit SharePoint 2007 bereitgestellt wird.

Um das gewünschte Suchverhalten zu erhalten, habe ich die SharePoint-Suche so konfiguriert, dass sie diesen Wörtertrenner verwendet:

  1. Kopieren Sie die DLL nach C:\Programme\Microsoft Office Servers\12.0\Bin\chsbrkr2.dll
  2. Navigieren Sie mit regedit zu HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\12.0\Search\Setup\ContentIndexCommon\LanguageResources\Default
  3. Für die entsprechenden Sprachen, in meinem Fall "Englisch (Vereinigtes Königreich)" und "Englisch (Vereinigte Staaten)", ändern Sie die folgenden Schlüssel: "WBDLLPathOverride" = "C:\PROGRA~1\MI54E7~1\12.0\Bin\ChsBrkr2.dll"(Ihr Pfad kann anders sein) und "WBreakerClass" = "{9717fc70-c1bc-11d0-9692-00a0c908146e}"
  4. Starten Sie den Dienst „Office SharePoint Server Search“ neu (kann über die Befehlszeile durch Ausführen net stop osearchgefolgt von erfolgen net start osearch).
  5. Gehen Sie zur Suchverwaltungsseite und starten Sie einen vollständigen Crawl.

Abgesehen davon, dass Unterstriche als Worttrennung behandelt werden, bin ich mir nicht sicher, ob es noch weitere signifikante Unterschiede zwischen chsbrkr.dll und der standardmäßigen englischen Worttrennung gibt, aber bisher hat es mir keine Probleme bereitet. Es wäre toll, wenn es eine Möglichkeit gäbe, die benutzerdefinierte Worttrennung auf bestimmte verwaltete Eigenschaften (in diesem Fall „Pfad“) anzuwenden, aber ich weiß nicht, ob das möglich ist. Es gibt eine vielversprechend benannte Spalte in der MSSManagedProperties-Tabelle der Datenbank namens „WordBreakerOverride“, aber ich weiß nicht, was ihr Zweck ist.

NOTIZ:In SharePoint 2010 verfügen verwaltete Eigenschaften offenbar über eine zusätzliche Einstellung namens „SplitStringCharacters“, die diesen Workaround möglicherweise überflüssig macht.

verwandte Informationen