2016-04-03 6 views
2

Я экспериментирую с Azure Search. У меня есть индекс с полем Edm.Double. Я создаю скоринговый профиль, чтобы увеличить это поле с помощью API REST Azure Search. В настоящее время у меня есть:Как изменить диапазон поля?

"scoringProfiles": [ 
    { 
    "name":"myProfile", 
    "functions": [ 
     { 
     "type":"magnitude", 
     "fieldName":"cost", 
     "boost": 2.5, 
     "magnitude": { 
      "boostingRangeStart":0, 
      "boostingRangeEnd":50 
     } 
     } 
    ] 
    } 
] 

Моя задача состоит в том, что я действительно не знаю, что будет диапазон моих данных. Я просто хочу увеличить поле cost. В C# я знаю, что могу использовать значения Double.MinValue и Double.MaxValue для охвата моего диапазона. Тем не менее, я не уверен, что Azure Search имеет такие константы, как это доступно. Я также не уверен, могу ли я использовать отрицательные числа в моем диапазоне диапазона оценки.

Есть ли способ определить скоринговый профиль по неизвестному диапазону значений?

ответ

0

В таком сценарии, мое мнение было бы применить какой-то bucketing или хэширования к стоимости стоимости. Или создайте новый атрибут, являющийся результатом bucketing значения стоимостью (так что вы можете использовать стоимость для отображения значения).

Вы можете рассчитать это значение на C# (используя Double.MinValue и Double.MaxValue) перед добавлением товара в индекс.

Это может быть не совсем надежное будущее, но вы всегда можете отрегулировать, если возникнет новое ведро из-за новой более высокой цены.

Таким образом, вы можете упростить функцию, зная заранее, что ведра вы можете генерировать и соответственно увеличивать.

Функция величины имеет значение constantBoostBeyondRange, которое вы можете использовать, если оно прошло и в конце диапазона.

+0

благодарит за ваш ответ. Я попробовал флаг 'constantBoostBeyondRange', однако я этого не понимаю. Предположим, я установил этот флаг в 'true', и у меня есть предметы с расходами в $ 1.00, $ 3.00, $ 5.00, $ 7.00 и $ 10.00. Теперь притворись, что мой «boostingRangeStart» равен 3,00, а мой «boostingRangeEnd» равен 7,00. Я предполагаю, что результаты с расходами в $ 3,00, $ 5,00 и $ 7,00 будут повышены. Но как насчет результатов с расходами в $ 1,00 и $ 10,00? Они игнорируются во время повышения? Усиливаются ли $ 1,00 и $ 10,00? Является ли это чем-то большим, чем другим? Увеличивает ли $ 10,00, но не $ 1,00? –

+0

Короче говоря, я не понимаю, для чего предназначен флаг 'constantBoostBeyondRange' или что он делает. Спасибо за помощь. –

+0

[Взято из документов] (https://msdn.microsoft.com/en-us/library/azure/dn798928.aspx): * Если установлено значение true, полный импульс будет продолжать применяться к документам, которые имеют значение для целевого поля, которое выше верхнего конца диапазона. Если false, повышение этой функции не будет применяться к документам, имеющим значение для целевого поля, которое выходит за пределы диапазона. * –

Смежные вопросы