Question

J'écris un FullTextSqlQuery et voudrais revenir toutes les colonnes disponibles dans le jeu de résultats.

Quand je précise les colonnes, par exemple SELECT Title FROM scope() WHERE ("scope" = 'All Sites'), la requête fonctionne très bien.

Lorsque je tente de sélectionner toutes les colonnes, par exemple SELECT * FROM scope() WHERE ("scope" = 'All Sites'), un QueryMalformedException est soulevé.

Le code de l'exécution de la requête est la suivante:

var sqlQuery = new FullTextSqlQuery(SPContext.Current.Site)
{
    ResultTypes = ResultType.RelevantResults,
    QueryText = searchQuery
};
var collectionOfResults = sqlQuery.Execute();

Est-il possible de récupérer toutes les colonnes disponibles, ou est-il une solution de contournement?

Était-ce utile?

La solution

AFAIK vous devez mentionner spécifiquement les colonnes que vous voulez.

  

Dans la requête SQL, vous êtes autorisé à utiliser l'astérisque (*) pour indiquer que toutes les colonnes d'une table doivent être retournés. Toutefois, aucun ensemble de propriétés définies et fixe s'applique à tous les documents. Pour cette raison, l'astérisque SQL n'est pas autorisé dans le cadre [colonnes].

http://msdn.microsoft.com/en-us/library/ ms569178.aspx

Autres conseils

FullTextSqlQuery utilise un type SQL syntaxe, mais pas vraiment SQL. L'instruction de requête est analysée en interne par SharePoint et utilisé pour interroger les fichiers d'index générés plat par le robot sur le système de fichiers, ainsi que pour générer de véritables requêtes SQL qui peuvent être exécutées sur la base de données de recherche.

Vous pouvez donc pas utiliser « * », et sont limitées à spécifier des propriétés gérées dans votre seule instruction select. Ces propriétés peuvent être définies dans les paramètres du SSP.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top