Si necesitas realizar ciertas operaciones con el buscador de SharePoint, de forma programática, como por ejemplo crear nuevos scopes de búsqueda, necesitarás obtener un objeto SearchServiceApplication.
En algunos ejemplos de internet, he visto un código como este:
1 |
<span style="color: #606060" id="lnum1"> 1:</span> SPFarm myFarm = SPFarm.Local; |
1 |
<span style="color: #606060" id="lnum2"> 2:</span> SearchService mySearchService = |
1 |
<span style="color: #606060" id="lnum3"> 3:</span> myFarm.Services.GetValue<SearchService>(<span style="color: #006080">"OSearch14"</span>); |
1 |
<span style="color: #606060" id="lnum4"> 4:</span> SearchServiceApplication mySearchServiceApp = |
1 |
<span style="color: #606060" id="lnum5"> 5:</span> mySearchService.SearchApplications.GetValue<SearchServiceApplication> |
1 |
<span style="color: #606060" id="lnum6"> 6:</span> (<span style="color: #006080">"Search Service Application"</span>); |
¿“Osearch14”?… ¿“Search Service Application”?
No sé vosotros, pero yo, cuando veo algún string “a piñón”, me entran los tembleques. Más aún, cuando en el caso de SharePoint, el “Search Service Application”, es el nombre que se le ha dado a la aplicación de servicio de búsqueda, y que no solo depende de cómo se haya instalado el servicio, sino que, en el caso de que se utilice el nombre por defecto que pone el asistente de instalación, también será diferente, según el idioma de la instalación.
Si lo que queremos, es conectarnos al servicio de búsqueda, del site en el que estamos trabajando, podemos hacer lo siguiente (partimos de un SPSite, que podemos recuperar del contexto de SharePoint, o abrir el sitio concreto):
1 |
<span style="color: #606060" id="lnum1"> 1:</span> SearchServiceApplicationProxy proxy = |
1 |
<span style="color: #606060" id="lnum2"> 2:</span> SearchServiceApplicationProxy.GetProxy(SPServiceContext.GetContext(site)) |
1 |
<span style="color: #606060" id="lnum3"> 3:</span> <span style="color: #0000ff">as</span> SearchServiceApplicationProxy; |
1 |
<span style="color: #606060" id="lnum4"> 4:</span>  |
1 |
<span style="color: #606060" id="lnum5"> 5:</span> SearchServiceApplicationInfo info = proxy.GetSearchServiceApplicationInfo(); |
1 |
<span style="color: #606060" id="lnum6"> 6:</span>  |
1 |
<span style="color: #606060" id="lnum7"> 7:</span> <span style="color: #0000ff">return</span> |
1 |
<span style="color: #606060" id="lnum8"> 8:</span> SearchService.Service.SearchApplications |
1 |
<span style="color: #606060" id="lnum9"> 9:</span> .GetValue<SearchServiceApplication>(info.SearchServiceApplicationId); |
De esta forma, estamos tirando del contexto, y no tenemos que “picar” ningún nombre concreto.
Espero que os sirva.
Saludos!!
Deja un comentario