【SharePoint Online】SharePoint search rest api搜索特殊字符、中文、空格没有结果解决方案

前言

在调用SharePoint search query rest api时候,经常会碰到搜索中文、空格等特殊字符时候无结果的情况,如下为解决方案

解决方案 

说明:如下是根据SitePath、DocumentLink、Path查找文档库中满足搜索条件的所有文件,由于文件夹中包含各种特殊字符、空格、中文等,所以需要做如下处理

1、把所有空格都转换为%20

2、将拼接好的字符串进行url编码

var searchSourceStr = "";
                searchSourceStr += "sourceid='" + SPSearchSource_Enum.DepartmentFileSourceID + "'";
                //必须加此项,否则会过滤到类似的数据
                searchSourceStr += "&trimduplicates=false";
                var queryTextStr = "";
                var filterArray = new Array();
                if (searchStr && searchStr.length > 0) {
                    var searchStrClean = AIUtility.AI.stringRemoveStrs(searchStr, ["'", "/", "#", "$", "&", "(", ")"]);
                    //filterArray.push("title:" + searchStrClean); 
                    filterArray.push(searchStrClean);
                }
                debugger;
                if (path && path.length > 0) {
                    var sitepath="SitePath:" + _spPageContextInfo.portalUrl.substring(0, _spPageContextInfo.portalUrl.length - 1) + path.replaceAll(' ','%20')+"*";
                    var documentLink="DocumentLink:" + _spPageContextInfo.portalUrl.substring(0, _spPageContextInfo.portalUrl.length - 1) + path.replaceAll(' ','%20')+"*";
                    var pathurl="Path:" + _spPageContextInfo.portalUrl.substring(0, _spPageContextInfo.portalUrl.length - 1) + path.replaceAll(' ','%20')+"*";
                    filterArray.push("("+encodeURIComponent(sitepath)+" OR "+encodeURIComponent(documentLink)+" OR "+encodeURIComponent(pathurl)+")");//escape转码,否则无数据
                } else {
                    filterArray.push("SitePath:" + _spPageContextInfo.webAbsoluteUrl + "*");//escape转码,否则无数据
                }
                filterArray.push("ContentType<>Folder");
                if (filterArray.length > 0) {
                    queryTextStr = "querytext='" + filterArray.filter(function (s) {
                        return s && s.trim();
                    }).join(" AND ") + "'";
                }
                var sortlist="sortlist='filename:ascending'";
                var selectproperties = "selectproperties='Filename,Path,ParentLink,DocumentLink,SitePath,Size,FileType,UniqueID,LastModifiedTime,Created,createBy,SPWebUrl'";
                var searchUrl = SPSearchAPIUrl + queryTextStr + "&" + selectproperties + "&"+ sortlist + "&" + searchSourceStr + "&startrow=" + (pageIndex - 1) * pageSize + "&rowlimit=" + pageSize;
                console.log(searchUrl);

最终query url

说明:
1、ContentType<>Folder  内容类型排除文件夹,只保留文档
2、sortlist='filename:ascending'  根据文件名升序排序
3、sourceid='sharepoint search result source id' SharePoint 搜索结果源ID
4、trimduplicates=false 重要:设置是否包含类似的文件,如果设置为true,最终结果可能会比实际的少
5、&startrow=0&rowlimit=20  分页时候会用到

https://SharePoint Site Url/_api/search/query?
querytext='(
SitePath:https://SharePoint Web Url/Documents/测试文档/Tech%20World测试-2021.11.28* 
OR DocumentLink:https://SharePoint Web Url/Documents/测试文档/Tech%20World测试-2021.11.28* OR Path:https://SharePoint Web Url/Documents/测试文档/Tech%20World测试-2021.11.28*) 
AND ContentType<>Folder'
&selectproperties='Filename,Path,ParentLink,DocumentLink,SitePath,ContentType,Size,FileType,UniqueID,LastModifiedTime,Created,createBy,SPWebUrl'
&sortlist='filename:ascending'
&sourceid='sharepoint search result source id'
&trimduplicates=false
&startrow=0&rowlimit=20

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起来学吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值