public static SearchResponse intersect(SearchResponse s1, SearchResponse s2) {
        Map<Integer, RendezVous> m1 = s1.getWordIndex().getMeetings();
        Map<Integer, RendezVous> m2 = s2.getWordIndex().getMeetings();
        Map<Integer, RendezVous> mResult = new HashMap<>();
        for (Integer file : m1.keySet()) {
            RendezVous rv2 = m2.get(file);
            if (rv2 != null) { // both in file
                ArrayList<Place> places1 = m1.get(file).getPlaces();
                ArrayList<Place> places2 = rv2.getPlaces();
                if(null != mResult.put(file, new RendezVous(file, true))) {
                    throw new RuntimeException("Duplicate file indexing");
                }
                ArrayList<Place> placesRes = mResult.get(file).getPlaces();
                placesRes.addAll(places1);
                placesRes.addAll(places2);
            }
        }
        return new SearchResponse(s1.getRequest().concat(" ").concat(s2.getRequest()), new WordIndex(mResult));
    }