//
// Created by Jake Close on 4/6/18.
//

//
// Created by nick on 3/16/18.
//

#include <iostream>
#include <set>
#include "../../indexer/DocumentEnding.h"
#include "../ISRWord.h"
#include <iterator>

#include <vector>
#include "../ISREndDoc.h"


using namespace std;

int main ( )
	{
	vector<ISRWord> queries;
	vector< vector< size_t > > locations;

	/*
	static const char TITLE = '#';
	static const char ANCHOR = '@';
	static const char URL = '$';
	static const char BODY = '%';
	static const char HOST = '=';
	*/

	ISRWord q1 = ISRWord("moment");
	ISRWord q2 = ISRWord("life");


	queries.push_back(q2);
	queries.push_back(q1);





	vector<vector<string>> urls;
	vector<string> out1;
	vector<string> out2;
	urls.push_back(out1 );
	urls.push_back(out2 );

	set<string> or_set;

	vector<size_t> loc1;
	vector<size_t> loc2;
	locations.push_back(loc1);
	locations.push_back(loc2);


	vector<double> times;
	for(int i = 0; i <queries.size() ; i++ )
		{
		clock_t start = clock();
		while(queries[i].getCurrentLocation() != MAX_Location)  {
			auto url = queries[i].DocumentEnd->getCurrentDoc().url;
			urls[i].push_back( url  );
			queries[i].NextDocument();

			}
		clock_t end = clock();
		double time = (end - start) / (double) CLOCKS_PER_SEC;
		times.push_back(time);

		}





	int i = 0;
	for(auto output  : urls)
		{
		cout << queries[i].term << endl;
		cout << "Time to complete query: " << times[i] << endl;
		for(auto urrl : output) {
			cout << urrl << endl;
			}
		i++;
		}


	cout << "Printing Set Intersection " << endl;
	vector<string> v1 = urls[0];
	vector<string> v2 = urls[1];

	std::vector<string> v_intersection;

	std::set_union(v1.begin(), v1.end(),
								 v2.begin(), v2.end(),
								 std::inserter(v_intersection, v_intersection.begin()));
	for(auto url : v_intersection)
		std::cout << url << endl;

	cout << "Number of results" << v_intersection.size( ) << endl;


	return 0;
	}