Получить внутренний идентификатор для уточняемой строки - PullRequest
0 голосов
/ 30 октября 2018

Я создаю запрос, который перенаправит пользователя на страницу поиска с соответствующей информацией о запросе. Моя проблема - единственный способ узнать, как получить внутренний идентификатор для refinablestring через адресную строку, мне нужен способ получить внутренний идентификатор через JavaScript.

Когда я говорю внутренний идентификатор, я имею в виду:

Имя: Refinablestring00

Внутренний идентификатор: ǂǂ446f63756d656e7460547970652031

Запрос, который генерируется (декодируется):

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

Чтобы уточнить, я хочу иметь возможность получить внутренний идентификатор, и у меня есть доступ к JSOM / стороне клиента. Какие варианты у меня есть?

Спасибо

1 Ответ

0 голосов
/ 01 ноября 2018

Это не официально документально подтверждено, но здесь мы идем. Давайте посмотрим, как представлен фильтр рафинера:

{ 
     "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);
...