Pesquisa do SharePoint: processando nomes de arquivos contendo sublinhados

Pesquisa do SharePoint: processando nomes de arquivos contendo sublinhados

Usamos o SharePoint Server 2007 para permitir que os funcionários pesquisem compartilhamentos de arquivos na rede, mas parece que os sublinhados nos nomes dos arquivos não são tratados como separadores de palavras ao indexar os arquivos.

Como resultado, uma busca porchocolatevai:

  • corresponder "chocolatemilk-shake.doc"
  • mas não corresponde a "chocolate_cake.doc"

(Claro, este é um exemplo simplificado; na prática, ocontentedo segundo arquivo pode incluir a palavra "chocolate" e corresponder a ela em vez do nome do arquivo. Mas o problema em si é bastante real, porque um cenário comum em um ambiente corporativo é que um usuário saiba o nome parcial do arquivo que está procurando e espere ver nomes de arquivos correspondentes no topo dos resultados da pesquisa. E usar sublinhados em nomes de arquivos é uma convenção amplamente utilizada em nossa empresa).

Os sublinhados também não são tratados como separadores de palavras no conteúdo do arquivo, embora isso seja menos preocupante para nós. A causa raiz deste problema épossivelmenterelacionado ao comportamento dos separadores de palavras que o SharePoint usa (ou seja, as DLLs específicas do idioma que implementam a interface IWorkBreaker), embora isso ainda não tenha sido confirmado.

Alguém sabe de uma solução alternativa para esse problema? Também testei com o Search Server 2008 Express (que é baseado na mesma tecnologia) e ele também foi afetado. Não sei se o problema foi corrigido no SharePoint 2010 ou não.

Responder1

Não acho que os sublinhados sejam tratados como delimitadores, e há um pouco de tráfego no social.technet que parece confirmar isso. Se (desde) for esse o caso, você precisará de uma pesquisa parcial/curinga para corresponder a 'chocolate' de 'chocolate_cake.doc', o que a web part de resultados principais não fará. No entanto, há um codeplexWeb Partpara 2007 isso faz exatamente isso.

Para sua informação, oVersão 2010desta mesma web part observa que o SharePoint 2010 adiciona pesquisas curinga, desde que o usuário digite o asterisco.

Responder2

Confirmei que o separador de palavras determina o tratamento de sublinhados tanto para o conteúdo do documento quanto para os nomes de arquivos. Os separadores de palavras são configurados por idioma no registro.

Os separadores de palavras são implementados como controles ActiveX e, teoricamente, deveria ser possível escrever os seus próprios (o Microsoft Platform SDK para Windows XP inclui um exemplo, "lrsample"), mas não tenho as ferramentas disponíveis para fazer isso. Parece que muitos dos separadores de palavras fornecidos pela Microsoft tratam sublinhados como parte de uma palavra, mas 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.

Portanto, para obter o comportamento de pesquisa desejado, configurei o SharePoint Search para usar este separador de palavras:

  1. Copie a DLL para C:\Arquivos de Programas\Microsoft Office Servers\12.0\Bin\chsbrkr2.dll
  2. Use o regedit para navegar até HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\12.0\Search\Setup\ContentIndexCommon\LanguageResources\Default
  3. 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\12.0\Bin\ChsBrkr2.dll"(seu caminho pode ser diferente) e "WBreakerClass" = "{9717fc70-c1bc-11d0-9692-00a0c908146e}"
  4. Reinicie o serviço "Office SharePoint Server Search" (pode ser feito através da linha de comando executando net stop osearchseguido de net start osearch).
  5. Acesse a página de administração de pesquisa e inicie um rastreamento completo.

Além de tratar os sublinhados como uma quebra de palavras, não tenho certeza se existem outras diferenças significativas entre chsbrkr.dll e o separador de palavras padrão em inglês, mas até agora 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 com 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 esta solução alternativa obsoleta.

informação relacionada