在fullTextsqlquery中使用select *
-
16-10-2019 - |
题
我正在编写FullTextSqlquery,并希望返回结果集中的所有可用列。
当我指定列时,例如 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星号。
其他提示
FullTextSqlQuery使用类似SQL的语法,但实际上不是SQL。查询语句由SharePoint内部解析,并用于查询文件系统上的crawler生成的平面索引文件,以及生成可以在搜索数据库上执行的真实SQL查询。
因此,您不能使用'*',并且仅限于在选择语句中仅指定托管属性。这些属性可以在您的SSP设置中定义。