获取 refineablestring 的内部 ID

Get the internal id for a refineablestring

我正在建立一个查询,它将用户重定向到包含相关查询信息的搜索页面。我的问题是我知道如何通过地址栏获取可精炼字符串的内部 ID 的唯一方法,我需要一种能够通过 JavaScript.

获取内部 ID 的方法

当我说内部 ID 时,我的意思是:

名称:Refinablestring00

内部 ID:ǂǂ446f63756d656e7460547970652031

生成(解码)的查询:

/sites/example/pages/Search.aspx#Default={"k":"*","r": 
[{"n":"RefinableString00","t": 
["\"ǂǂ4469736363706c696e652032\""],"o":"and","k":false,"m":null}]}

澄清一下,我希望能够获取内部 ID 并且我可以访问 JSOM/client 端。我有哪些选择?

谢谢,

这没有官方记录,但我们开始吧。 我们来看看refiner filter是如何表示的:

{ 
     "k": queryText,    //search query 
     "r": [   //<- the list of refiners
              { 
                  "n": propertyName,   //property value 
                  "t": [token],  //encoded property value (see below for a more details)  
                  "o": "and",    //(or,and) operators
                  "k": false, 
                  "m": null 
              }
      ],
      //another refiners go here.. 
      "l": lcid   //language 
} 

其中 token 表示 编码的 属性 值,可以这样生成:

var strToHex = function (value) {
     var hex = unescape(encodeURIComponent(value))
        .split('').map(function(v){
             return v.charCodeAt(0).toString(16)
        }).join('')
     return hex; 
};


//Usage
var propertyValue = "Jon Doe";
var token = "\"ǂǂ" + strToHex(propertyValue) + "\"";
console.log(token);

例子

以下示例演示如何生成搜索 url,其中包括具有 属性 名称 DisplayAuthor 和值 Jon Doe

的精炼过滤器

function createRefiner(queryText,propertyName, propertyValue,lcid) {
     lcid = lcid || 1033;
     var strToHex = function (value) {
                var hex = unescape(encodeURIComponent(value))
                    .split('').map(function(v){
                         return v.charCodeAt(0).toString(16)
                   }).join('')
                return hex; 
     };
     var token = "\"ǂǂ" + strToHex(propertyValue) + "\"";
     return { 
              "k": queryText, 
              "r": [{ "n": propertyName, "t": [token], "o": "and", "k": false, "m": null }], 
              "l": lcid 
     };
}


//Usage
var refiner = createRefiner("*","DisplayAuthor","Jon Doe");
var queryGroupName = "Default";
var refinerFilter = queryGroupName + '=' + encodeURIComponent(JSON.stringify(refiner));
var pageUrl = "/_layouts/15/osssearchresults.aspx" + '#' + refinerFilter;
console.log(pageUrl);