int find_match(SuffixTree& base, string prefix, int procs, int rank)
{
	struct timespec pp_time2_b = recorder_wtime();
	Preprocess pp_right(prefix + string("log.") + to_string(rank), procs, rank, true);
	pp_right.run();
	str_hmap_list right = pp_right.get_data();
	struct timespec pp_time2_e = recorder_wtime();
	pp_time += (pp_time2_e - pp_time2_b);

	struct timespec m_time_b = recorder_wtime();
	ofstream fout("st/suffix_merged", ios::app);
	fout << rank << "-info--------" << endl;
	
	int begin = 0, end = 0, limit = right.size();
	int pos;
	int sub_begin;

	int length, final_pos, begin_pos;

	typename str_hmap_list::iterator r_iter = right.begin();
	++r_iter;	// skip the empty element
	
	while (r_iter != right.end()) {
		typename str_hmap_list::iterator pre_iter = r_iter;
		r_iter = base.inc_search(r_iter, &final_pos);

		if (r_iter == pre_iter) {
			fout << "insert " << *r_iter << endl;
			++r_iter;
		}
		else {
			length = r_iter - pre_iter;
			begin_pos = final_pos - length + 1;
			fout << "keep " << begin_pos << " " << final_pos << endl;
		}
	}
	fout.close();
	struct timespec m_time_e = recorder_wtime();
	merge_time += (m_time_e - m_time_b);

	return 0;
}