Confirmei que o separador de palavras determina o tratamento de sublinhados para o conteúdo do documento e para os nomes dos arquivos. Os separadores de palavras são configurados em uma base por idioma no registro.
Os separadores de palavras são implementados como controles ActiveX e, teoricamente, deve ser possível criar o seu próprio (o Microsoft Platform SDK para Windows XP inclui um exemplo, "lrsample"), mas não tenho as ferramentas disponíveis para fazer naquela. Parece que muitos dos separadores de palavras que a Microsoft fornece tratam sublinhados como parte de uma palavra, mas eu encontrei um que quebra em sublinhados: versão 2 do separador de palavras para chinês simplificado (chsbrkr.dll - 1.677.824 bytes). Observe que esse comportamento difere da versão 3 do separador de palavras em chinês simplificado, que é fornecido com o Search Server 2008 Express e provavelmente também com o SharePoint 2007.
Para obter o comportamento de pesquisa desejado, configurei a Pesquisa do SharePoint para usar esse separador de palavras:
- Copie a DLL para C: \ Arquivos de Programas \ Microsoft Office Servers \ 12.0 \ Bin \ chsbrkr2.dll
- Use o regedit para navegar até HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Servidor do Office \ 12.0 \ Search \ Setup \ ContentIndexCommon \ LanguageResources \ Default
- Para os idiomas relevantes, no meu caso "Inglês (Reino Unido)" e "Inglês (Estados Unidos)", modifique as seguintes chaves:
"WBDLLPathOverride" = "C:\PROGRA~1\MI54E7~1.0\Bin\ChsBrkr2.dll"
(seu caminho pode ser diferente)
e
%código%
- Reinicie o serviço "Office SharePoint Server Search" (pode ser feito por meio da linha de comando executando
"WBreakerClass" = "{9717fc70-c1bc-11d0-9692-00a0c908146e}"
seguido por net stop osearch
).
- Vá para a página de administração de pesquisa e inicie um rastreamento completo.
Além de tratar sublinhados como uma quebra de palavra, não tenho certeza se existem outras diferenças significativas entre chsbrkr.dll e o padrão de quebra de palavras em inglês, mas até agora isso não causou nenhum problema para mim. Seria ótimo se houvesse uma maneira de aplicar o separador de palavras personalizado a propriedades gerenciadas específicas (Caminho, neste caso), mas não sei se isso é possível. Há uma coluna de nome promissor na tabela MSSManagedProperties do banco de dados chamada "WordBreakerOverride", mas não sei qual é sua finalidade.
OBSERVAÇÃO: No SharePoint 2010, as propriedades gerenciadas aparentemente têm uma configuração adicional chamada SplitStringCharacters, o que pode tornar essa solução obsoleta.