获取 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);
我正在建立一个查询,它将用户重定向到包含相关查询信息的搜索页面。我的问题是我知道如何通过地址栏获取可精炼字符串的内部 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);