Вопрос

Я пишу полную плату и хотел бы вернуть все доступные столбцы в наборе результатов.

Когда я указываю столбцы, например, SELECT Title FROM scope() WHERE ("scope" = 'All Sites'), запрос работает нормально.

Когда я пытаюсь выбрать все столбцы, например, SELECT * FROM scope() WHERE ("scope" = 'All Sites'), QueryMalformedException поднимается.

Код для выполнения запроса:

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

Можно ли получить все доступные столбцы, или есть обходной путь?

Это было полезно?

Решение

Afaik, вы должны специально упомянуть нужные столбцы.

В запросе SQL вам разрешено использовать звездочку (*), чтобы указать, что все столбцы в таблице должны быть возвращены. Тем не менее, определенный и фиксированный набор свойств не применяется ко всем документам. По этой причине звездочка SQL не допускается в настройке [Columns].

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

Другие советы

FulltextSqlQuery использует SQL-подобный синтаксис, но на самом деле не SQL. Оператор запроса проанализируется внутри SharePoint и используется для запроса файлов плоских индексов, сгенерированных Crawler в файловой системе, а также для создания реальных запросов SQL, которые могут быть выполнены в базе данных поиска.

Поэтому вы не можете использовать «*» и ограничиваются указанием только управляемых свойств в вашем операторе SELECT. Эти свойства могут быть определены в настройках SSP.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top