这没有正式记录,但我们开始了。我们来看一下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);