str += "]," + mSearchOrder + ")";
str += "]," + mParams.getSortBy()+ ")";
    public ZimbraQueryResults execute() throws ServiceException, IOException    {        MailboxIndex mbidx = mMbox.getMailboxIndex();        if (ZimbraLog.index.isDebugEnabled()) {            String str = this.toString() +" search([";            for (int i = 0; i < mTypes.length; i++) {                if (i > 0) {                    str += ",";                }                str+=mTypes[i];            }            str += "]," + mSearchOrder + ")";            ZimbraLog.index.debug(str);        }        if (mOp!= null) {            if (mLog.isDebugEnabled())                mLog.debug("OPERATION:"+mOp.toString());            QueryTargetSet targets = mOp.getQueryTargets();            assert(mOp instanceof UnionQueryOperation || targets.countExplicitTargets() <=1);            assert(mResults == null);            // if we've only got one target, and it is external, then mOp must be a RemoteQueryOp            assert(targets.size() >1 || !targets.hasExternalTargets() || mOp instanceof RemoteQueryOperation);            mResults = mOp.run(mMbox, mbidx, mTypes, mSearchOrder, mChunkSize, mPrefetch, mMode);            mResults = new HitIdGrouper(mResults, mSearchOrder);            return mResults;        } else {            mLog.debug("Operation optimized to nothing.  Returning no results");        }        return new EmptyQueryResults(mTypes, mSearchOrder, mMode);    }