* @param mvdPos the start-position of the first term in the mvd
     * @param firstTerm the first term of the query 
     * @return the set of versions it was found in (may be empty)
     */
	public BitSet find( String query, int mvdPos, String firstTerm )
    {
        int pos = 0;
        String rhs = query;
        String lhs = "";
        boolean found = false;
        BitSet bs = new BitSet();
        int index = query.indexOf(firstTerm);
        if ( index > 0 )
        {
            rhs = query.substring(index);
            lhs = query.substring(0,index);
        }
        for ( int i=0;i<pairs.size();i++ )
        {
            Pair p = pairs.get(i);
            if ( p.length()+pos > mvdPos )
            {
                for ( int v=p.versions.nextSetBit(0);v>=0;v=p.versions.nextSetBit(v+1) )
                {
                    found = findForward(rhs,i,mvdPos-pos,v);
                    if ( found && lhs.length()>0 )
                        found = findBackward(lhs,i,(mvdPos-pos)-1,v);
                    if ( found ) 
                        bs.set(v);
                }
                break;
            }
            pos += p.length();
        }
        return bs;
    }