diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/FilterImpl.java oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/FilterImpl.java
index 1bc1f2e..8750a0a 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/FilterImpl.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/FilterImpl.java
@@ -30,6 +30,10 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.jcr.PropertyType;
 
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.ListMultimap;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Multimaps;
 import org.apache.jackrabbit.oak.api.PropertyValue;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.query.QueryEngineSettings;
@@ -85,8 +89,8 @@ public class FilterImpl implements Filter {
     
     private FullTextExpression fullTextConstraint;
 
-    private final HashMap<String, PropertyRestriction> propertyRestrictions =
-            new HashMap<String, PropertyRestriction>();
+    private final ListMultimap<String, PropertyRestriction> propertyRestrictions =
+            ArrayListMultimap.create();
 
     /**
      * Only return distinct values.
@@ -245,7 +249,8 @@ public class FilterImpl implements Filter {
      */
     @Override
     public PropertyRestriction getPropertyRestriction(String propertyName) {
-        return propertyRestrictions.get(propertyName);
+        List<PropertyRestriction> values = propertyRestrictions.get(propertyName);
+        return values.isEmpty() ? null : values.get(0);
     }
 
     public boolean testPath(String path) {
@@ -367,12 +372,9 @@ public class FilterImpl implements Filter {
     }
     
     private PropertyRestriction addRestricition(String propertyName) {
-        PropertyRestriction x = propertyRestrictions.get(propertyName);
-        if (x == null) {
-            x = new PropertyRestriction();
-            x.propertyName = propertyName;
-            propertyRestrictions.put(propertyName, x);
-        }
+        PropertyRestriction x = new PropertyRestriction();
+        x.propertyName = propertyName;
+        propertyRestrictions.get(propertyName).add(x);
         return x;
     }
     
@@ -406,10 +408,10 @@ public class FilterImpl implements Filter {
         buff.append(", path=").append(getPathPlan());
         if (!propertyRestrictions.isEmpty()) {
             buff.append(", property=[");
-            Iterator<Entry<String, PropertyRestriction>> iterator = propertyRestrictions
-                    .entrySet().iterator();
+            Iterator<Entry<String, Collection<PropertyRestriction>>> iterator = propertyRestrictions
+                    .asMap().entrySet().iterator();
             while (iterator.hasNext()) {
-                Entry<String, PropertyRestriction> p = iterator.next();
+                Entry<String, Collection<PropertyRestriction>> p = iterator.next();
                 buff.append(p.getKey()).append("=").append(p.getValue());
                 if (iterator.hasNext()) {
                     buff.append(", ");
