在使用 FullTextSqlQuery 定制MOSS 2007的搜索时,遇到如下问题:
使用 order by 子句后,没有返回全部的查询结果(没有Order by时返回10条,加了Order by后,只返回5条)
查询语句为:select path,title,author from scope() where (freetext('sharepoint')) order by author
Google后找到一篇文章 MOSS Search with Order by Clause – Doesn’t return all results, 发现导致问题的原因是搜索结果中的某些记录的Order by 字段(如author字段)为Null,导致排序后为Null的记录没有返回。
解决办法:安装Hotfix 937208, 根据KB937775修改注册表
由于我的MOSS服务器已经打了SP2的补丁,Hotfix 937208已经包含在SP1中(可参考Office SharePoint Server Service Pack 1 content查看SP1的内容),故不需要安装了,只需按照KB937775修改注册表即可,但是修改完了之后,问题并没有如期的解决。
最后我只得通过其它方式绕过此问题:
1. 针对要搜索的Scope(此处仅为一个列表),新增一个字段记录Author_Name,保存创建者的名称。
2. 重新针对Scope执行完全爬网
3. 爬网结束后,新建爬网属性映射map_Author_Name映射到已爬网字段Author_Name
4. 将order by的字段Author,修改为: order by map_Author_Name