text: /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *   http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing,
   * software distributed under the License is distributed on an
   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   * KIND, either express or implied.  See the License for the
   * specific language governing permissions and limitations
   * under the License.
   */
  /*
   * Description    : Fuzzy joins two datasets, DBLP and CSX, based on ~= using Jaccard of their 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;
  set import-private-functions 'true';
  
  create type DBLPType as closed {
    id: int32,
    dblpid: string,
    title: string,
    authors: string,
    misc: string
  }
  
  create type CSXType as closed {
    id: int32,
    csxid: string,
    title: string,
    authors: string,
    misc: string
  }
  
  create dataset DBLP(DBLPType) primary key id;
  
  create dataset CSX(CSXType) primary key id;
  
  create index ngram_index on DBLP(title) type ngram(3);
  
  write output to asterix_nc1:"rttest/inverted-index-join_ngram-fuzzyeq-jaccard_01.adm";
  
  set simfunction 'jaccard';
  set simthreshold '0.5f';
  
  for $b in dataset('CSX')
  for $a in dataset('DBLP')
  where gram-tokens($a.title, 3, false) ~= gram-tokens($b.title, 3, false) and $a.id < $b.id
  return {"arec": $a, "brec": $b }
  