/*
 * Description    : Fuzzy self joins a dataset, DBLP, based on the similarity-jaccard function of its titles' 3-gram tokens.
 *                  DBLP has a 3-gram index on title, and we expect the join to be transformed into an indexed nested-loop join.
 * Success        : Yes
 */

drop dataverse test if exists;
create dataverse test;
use dataverse test;

create type DBLPType as closed {
  id: int32, 
  dblpid: string,
  title: string,
  authors: string,
  misc: string
}

create dataset DBLP(DBLPType) partitioned by key id;

load dataset DBLP 
using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
(("path"="nc1://data/dblp-small/dblp-small-id.txt"),("format"="delimited-text"),("delimiter"=":")) pre-sorted;

create index ngram_index on DBLP(title) type ngram(3);

write output to nc1:"rttest/inverted-index-join_ngram-jaccard_03.adm";

for $a in dataset('DBLP')
for $b in dataset('DBLP')
where similarity-jaccard(gram-tokens($a.title, 3, false), gram-tokens($b.title, 3, false)) >= 0.5f
      and $a.id < $b.id
return {"arec": $a, "brec": $b }