Utilizzando SELECT * in FullTextSqlQuery
-
16-10-2019 - |
Domanda
Sto scrivendo un FullTextSqlQuery e vorrei tornare tutte le colonne disponibili nel set di risultati.
Quando ho specificare le colonne, ad esempio, SELECT Title FROM scope() WHERE ("scope" = 'All Sites')
, la query funziona bene.
Quando si tenta di selezionare tutte le colonne, ad esempio, SELECT * FROM scope() WHERE ("scope" = 'All Sites')
, un QueryMalformedException è sollevata.
Il codice per l'esecuzione della query è:
var sqlQuery = new FullTextSqlQuery(SPContext.Current.Site)
{
ResultTypes = ResultType.RelevantResults,
QueryText = searchQuery
};
var collectionOfResults = sqlQuery.Execute();
E 'possibile recuperare tutte le colonne disponibili, o c'è una soluzione?
Soluzione
Per quanto ne so si deve ricordare in particolare le colonne che si desidera.
Nella query SQL, v'è permesso di utilizzare l'asterisco (*) per specificare che tutte le colonne di una tabella devono essere restituiti. Tuttavia, nessun insieme di proprietà definita e fissa si applica a tutti i documenti. Per questo motivo, l'asterisco SQL non è consentito nell'impostazione [colonne].
Altri suggerimenti
FullTextSqlQuery utilizza una sintassi SQL-like, ma in realtà non è SQL. La dichiarazione query viene analizzato internamente da SharePoint e usato per interrogare i file di indice piatte generati dal crawler sul file system, così come per generare query SQL reali che possono essere eseguite sul database di ricerca.
È pertanto non è possibile utilizzare '*', e sono limitati a specificare le proprietà solo gestite nell'istruzione select. Queste proprietà possono essere definite nelle impostazioni del provider di servizi condivisi.