mNumMessages++;
mNumMessages.incrementAndGet();
        public void handle(int lineNo, Map<String, String> map) throws IOException {            if (map == null) {                return;            }                                    if (mNumMessages > 0 && ((mNumMessages % MAIL_QUEUE_INDEX_FLUSH_THRESHOLD) == 0)) {                reopenIndexWriter();            }               mNumMessages++;                        Document doc = new Document();            // public Field(String name, String string, boolean store, boolean index, boolean token, boolean storeTermVector) {            String id = map.get(QueueAttr.id.toString());            if (id == null) {                throw new IOException("no ID defined near line=" + lineNo);            }            doc.add(new Field(QueueAttr.id.toString(), id.toLowerCase(), true, true, false, false));            String time = map.get(QueueAttr.time.toString());            if (time != null && time.length() > 0) {                long timeMillis = Long.parseLong(time) * 1000;                doc.add(new Field(QueueAttr.time.toString(), Long.toString(timeMillis), true, true, false, false));            }            addSimpleField(doc, map, QueueAttr.size);            addSimpleField(doc, map, QueueAttr.addr);            addSimpleField(doc, map, QueueAttr.host);            addSimpleField(doc, map, QueueAttr.filter);                        String reason = map.get(QueueAttr.reason.toString());            if (reason != null && reason.length() > 0) {                doc.add(new Field(QueueAttr.reason.toString(), reason.toLowerCase(), true, true, true, false));                doc.add(new Field(QueueAttr.reason_summary.toString(), reason.toLowerCase(), true, true, false, false));            }                        String from = map.get(QueueAttr.from.toString());            if (from != null && from.length() > 0) {                addEmailAddress(doc, id, from, QueueAttr.from, QueueAttr.fromdomain);            }                        String toWithCommas = map.get(QueueAttr.to.toString());            if (toWithCommas != null && toWithCommas.length() > 0) {                String[] toArray = toWithCommas.split(",");                for (String to : toArray) {                    addEmailAddress(doc, id, to, QueueAttr.to, QueueAttr.todomain);                }            }            if (ZimbraLog.rmgmt.isDebugEnabled()) { ZimbraLog.rmgmt.debug("[scan id=" + mId + "] " +  doc); }            mIndexWriter.addDocument(doc);        }