diff --git a/java/src/com/android/inputmethod/research/ResearchLogger.java b/java/src/com/android/inputmethod/research/ResearchLogger.java
index 6295abe8c38ce1d504fcf7bc6dd6bdab6380d937..bae34340f958fa3341765631209ee8d9769fd616 100644
--- a/java/src/com/android/inputmethod/research/ResearchLogger.java
+++ b/java/src/com/android/inputmethod/research/ResearchLogger.java
@@ -706,12 +706,29 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
         }
     }
 
+    private static final String[] EVENTKEYS_LOG_SEGMENT_START = {
+        "logSegmentStart", "isIncludingPrivateData"
+    };
+    private static final String[] EVENTKEYS_LOG_SEGMENT_END = {
+        "logSegmentEnd"
+    };
     /* package for test */ void publishLogBuffer(final LogBuffer logBuffer,
             final ResearchLog researchLog, final boolean isIncludingPrivateData) {
+        final LogUnit openingLogUnit = new LogUnit();
+        final Object[] values = {
+            isIncludingPrivateData
+        };
+        openingLogUnit.addLogStatement(EVENTKEYS_LOG_SEGMENT_START, values,
+                false /* isPotentiallyPrivate */);
+        researchLog.publish(openingLogUnit, true /* isIncludingPrivateData */);
         LogUnit logUnit;
         while ((logUnit = logBuffer.shiftOut()) != null) {
             researchLog.publish(logUnit, isIncludingPrivateData);
         }
+        final LogUnit closingLogUnit = new LogUnit();
+        closingLogUnit.addLogStatement(EVENTKEYS_LOG_SEGMENT_END, EVENTKEYS_NULLVALUES,
+                false /* isPotentiallyPrivate */);
+        researchLog.publish(closingLogUnit, true /* isIncludingPrivateData */);
     }
 
     private boolean hasOnlyLetters(final String word) {