clc
clear
close all
queries = split(fileread('torob-search-data_v1.jsonl'),newline);
%% Finding Weights from Training Data
load prodIDs.mat
prodIDs = sort(prodIDs);
IDID = cell(1,numel(queries) - 1);
for i = 1 : numel(queries) - 1
Q = jsondecode(queries{i});
IDID{i} = Q.clicked_result;
end
t = countlabels(categorical(cell2mat(IDID')));
clickIDs = double(string(t.Label));
dif = setdiff(prodIDs,clickIDs');
W = t.Count;
prodIDs = [clickIDs,dif];
W = [W , zeros(size(dif))];
nanIDs = isnan(prodIDs);
prodIDs(nanIDs) = [];
W(nanIDs) = [];
%% Ranking Test Data:
testData = split(fileread('test-offline-data_v1.jsonl'),newline);
textout = [];
for i =1:numel(testData)-1
test = jsondecode(testData{i});
list = (test.result_not_ranked);
idx = find(ismember(prodIDs',list));
[~,Widx] = sort(W(idx),'descend');
idx = idx(Widx);
sortedList = prodIDs(idx);
str = num2str(sortedList);
textout = [textout;string(replace(str,' ',','))];
end
writematrix(textout,'predictions.txt')