class ApproxVectorSimilarityJoinLSHBatchOp extends BatchOperator<ApproxVectorSimilarityJoinLSHBatchOp> implements ApproxVectorJoinLSHParams<ApproxVectorSimilarityJoinLSHBatchOp> {

    @Override
    public ApproxVectorSimilarityJoinLSHBatchOp linkFrom(BatchOperator<?>... inputs) {
        checkOpSize(2, inputs);

        String leftIdCol = this.getLeftIdCol();
        String rightIdCol = this.getRightIdCol();

        DataSet<BaseLSH> lsh = LocalitySensitiveHashApproxFunctions.buildLSH(inputs[0], inputs[1], this.getParams());

        DataSet<Row> res = LocalitySensitiveHashApproxFunctions.approxSimilarityJoin(
            inputs[0].select(new String[] {leftIdCol, getLeftCol()}).getDataSet(),
            inputs[1].select(new String[] {rightIdCol, getRightCol()}).getDataSet(), this.getDistanceThreshold(), lsh);

        this.setOutput(res, getJoinOutputSchema(inputs, leftIdCol, rightIdCol));
        return this;
    }

    public  ApproxVectorSimilarityJoinLSHBatchOp();
    public  ApproxVectorSimilarityJoinLSHBatchOp(Params params);

}