drop dataverse fuzzyjoin if exists;

create dataverse fuzzyjoin;

use dataverse fuzzyjoin;

create type UserType as open {
  uid: int32, 
  name: string,
  lottery_numbers: [int32],
  interests: <string>
}

create type VisitorType as open {
  vid: int32, 
  name: string,
  lottery_numbers: [int32],
  interests: <string>
}

create dataset Users(UserType) partitioned by key uid;
create dataset Visitors(VisitorType) partitioned by key vid;

load dataset Users from nc1:'data/users-visitors-small/users.json';
load dataset Visitors from nc1:'data/users-visitors-small/visitors.json';

write output to nc1:'rttest/fuzzyjoin_user-vis-lot-aqlplus_5.adm';

for $user in dataset('Users')
for $visitor in dataset('Visitors')
where $user.lottery_numbers ~= $visitor.lottery_numbers
order by $user.uid, $visitor.vid
return {'user': $user, 'visitor': $visitor}
