我正在编写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星号。

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

其他提示

FullTextSqlQuery使用类似SQL的语法,但实际上不是SQL。查询语句由SharePoint内部解析,并用于查询文件系统上的crawler生成的平面索引文件,以及生成可以在搜索数据库上执行的真实SQL查询。

因此,您不能使用'*',并且仅限于在选择语句中仅指定托管属性。这些属性可以在您的SSP设置中定义。

许可以下: CC-BY-SA归因
scroll top