2010-01-09 4 views
2

J'essaie d'utiliser FullTextSqlQuery pour trouver une liste de sites sharepoint auxquels un utilisateur a accès. Voici mon code:Quelle est la portée de recherche d'un FullTextSqlQuery

SPFarm farm = SPFarm.Local; 

SPWebServiceCollection webServices = 
    new SPWebServiceCollection(farm); 

foreach (SPWebService webService in webServices) 
{ 
    foreach (SPWebApplication webApp in webService.WebApplications) 
    { 
     using (FullTextSqlQuery fullTextSqlQuery = new 
      FullTextSqlQuery(ServerContext.GetContext(webApp))) 
     { 
     // Do some Initializtion 
     fullTextSqlQuery.QueryText = 
      "select title, path from scope() where (contentclass = 'STS_Web' or contentclass = 'STS_Site') order by path"; 

      // execute the query and gather results 
     } 
    } 
} 

Je pensais naturellement le champ de recherche d'un FullTextSqlQuery est défini par l'argument du constructeur, comme une application web serait le champ de recherche dans ce cas:
FullTextSqlQuery fullTextSqlQuery = new FullTextSqlQuery(ServerContext.GetContext(webApp))

Cependant, Pour chaque application Web, la requête renvoie exactement le même résultat, ce qui signifie que webApp n'est pas utilisée comme portée. Alors, comment définir une portée pour une requête?

Merci.

Répondre

1

Les étendues sont définies (personnalisées ou non) dans le fournisseur de services partagés que votre application Web utilise. Dans les paramètres de collection de sites du site yoru, vous pouvez spécifier des étendues autorisées et utilisées. Le fournisseur de services partagés se trouve dans le menu de gauche de l'administrateur central, puis, une fois dans le site d'administration ssp, vous pouvez ajouter, modifier et supprimer des étendues de recherche.

Plus d'info here.

+0

Bonjour Colin, merci pour votre réponse. Je suis nouveau à Sharepoint. Dans mon cas, j'initialise des requêtes à partir de différentes applications Web, mais toutes les requêtes renvoient le même résultat. Cela signifie-t-il que ces applications Web utilisent le même SSP? – Shuo

+1

Oui c'est le cas. Vous pouvez créer de nouveaux SSP si nécessaire, ou simplement définir des étendues dans un seul SSP. – Colin

+1

Alors, que fait le contexte ou le paramètre SPSite du constructeur s'il ne définit pas la portée? –

Questions connexes