Использование SELECT * в FullTextSqlQuery
-
16-10-2019 - |
Вопрос
Я пишу полную плату и хотел бы вернуть все доступные столбцы в наборе результатов.
Когда я указываю столбцы, например, 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].
Другие советы
FulltextSqlQuery использует SQL-подобный синтаксис, но на самом деле не SQL. Оператор запроса проанализируется внутри SharePoint и используется для запроса файлов плоских индексов, сгенерированных Crawler в файловой системе, а также для создания реальных запросов SQL, которые могут быть выполнены в базе данных поиска.
Поэтому вы не можете использовать «*» и ограничиваются указанием только управляемых свойств в вашем операторе SELECT. Эти свойства могут быть определены в настройках SSP.