diff --git a/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/SearchQueryParserImpl.java b/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/SearchQueryParserImpl.java
index caa1cad..a62d34b 100644
--- a/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/SearchQueryParserImpl.java
+++ b/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/SearchQueryParserImpl.java
@@ -21,6 +21,8 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -96,7 +98,7 @@
 	}
 
 	public static final Set<String> SEARCH_PARAMETERES = new HashSet<String>();
-	public static final Set<String> MESSAGE_FIELDS = new HashSet<String>();
+	public static final Set<String> MESSAGE_FIELDS = new LinkedHashSet<String>();
 	public static final Map<String, String> SEARCH_PARAMETER_TO_MESSAGE_FIELD_MAP = new HashMap<String, String>();
 
 	static {
diff --git a/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/SearchServiceTest.java b/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/SearchServiceTest.java
index 1aa5fa3..ca37f40 100644
--- a/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/SearchServiceTest.java
+++ b/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/SearchServiceTest.java
@@ -44,74 +44,73 @@
 		params.add(new Object[] {"blank search field", "", QueryBuilderImpl.BASE } );
 
 		params.add(new Object[] {"one word", "word", QueryBuilderImpl.BASE + " AND "
-				+ "(LOWER(Body) LIKE '%word%' "
+				+ "(LOWER(From) LIKE '%word%' "
 				+ "OR LOWER(Subject) LIKE '%word%' "
 				+ "OR LOWER('List-Id') LIKE '%word%' "
-				+ "OR LOWER(From) LIKE '%word%')" 
+				+ "OR LOWER(Body) LIKE '%word%')" 
 		} );	
 		
 		// TODO logically this is true, practically order by score because
 		params.add(new Object[] {"two words", "hello word", QueryBuilderImpl.BASE + " AND " 
-				+ "(LOWER(Body) LIKE '%hello%' "
-				+ "OR LOWER(Body) LIKE '%word%' "
+				+ "(LOWER(From) LIKE '%hello%' "
+				+ "OR LOWER(From) LIKE '%word%' "
 				+ "OR LOWER(Subject) LIKE '%hello%' "
 				+ "OR LOWER(Subject) LIKE '%word%' "
 				+ "OR LOWER('List-Id') LIKE '%hello%' "
 				+ "OR LOWER('List-Id') LIKE '%word%' "
-				+ "OR LOWER(From) LIKE '%hello%' " 
-				+ "OR LOWER(From) LIKE '%word%')" 
+				+ "OR LOWER(Body) LIKE '%hello%' " 
+				+ "OR LOWER(Body) LIKE '%word%')" 
 		} );	
 
 		params.add(new Object[] {"field search", "hello from:world", QueryBuilderImpl.BASE + " AND "
 				+ "(LOWER(From) LIKE '%world%') "
-				+ "AND (LOWER(Body) LIKE '%hello%' "
+				+ "AND (LOWER(From) LIKE '%hello%' "
 				+ "OR LOWER(Subject) LIKE '%hello%' "
 				+ "OR LOWER('List-Id') LIKE '%hello%' "
-				+ "OR LOWER(From) LIKE '%hello%')" 
+				+ "OR LOWER(Body) LIKE '%hello%')" 
 		} );
 
 		params.add(new Object[] {"caps", "SuBjecT:HeRE THeRe", QueryBuilderImpl.BASE + " AND "
 				+ "(LOWER(Subject) LIKE '%here%') " 
-				+ "AND (LOWER(Body) LIKE '%there%' "
+				+ "AND (LOWER(From) LIKE '%there%' "
 				+ "OR LOWER(Subject) LIKE '%there%' "
 				+ "OR LOWER('List-Id') LIKE '%there%' "
-				+ "OR LOWER(From) LIKE '%there%')" 
+				+ "OR LOWER(Body) LIKE '%there%')" 
 		} );
 
 		params.add(new Object[] {"non-existent field", "FROM:me list:public about:stuff", QueryBuilderImpl.BASE + " AND " 
-				+ "(LOWER('List-Id') LIKE '%public%') "
-				+ "AND (LOWER(From) LIKE '%me%')" 
+				+ "(LOWER(From) LIKE '%me%') "
+				+ "AND (LOWER('List-Id') LIKE '%public%')" 
 		} );
 
 		params.add(new Object[] {"just non-existent field", "frome:e", QueryBuilderImpl.DUMMY } );
 
 		params.add(new Object[] {"two spaces (parsing)", "a  b", QueryBuilderImpl.BASE + " AND "
-				+ "(LOWER(Body) LIKE '%a%' "
-				+ "OR LOWER(Body) LIKE '%b%' "
+				+ "(LOWER(From) LIKE '%a%' "
+				+ "OR LOWER(From) LIKE '%b%' "
 				+ "OR LOWER(Subject) LIKE '%a%' "
 				+ "OR LOWER(Subject) LIKE '%b%' "
 				+ "OR LOWER('List-Id') LIKE '%a%' "
 				+ "OR LOWER('List-Id') LIKE '%b%' "
-				+ "OR LOWER(From) LIKE '%a%' " 
-				+ "OR LOWER(From) LIKE '%b%')" 
+				+ "OR LOWER(Body) LIKE '%a%' " 
+				+ "OR LOWER(Body) LIKE '%b%')" 
 		} );	
 
 		params.add(new Object[] {"quoted text", "\"hel  wrd\"", QueryBuilderImpl.BASE + " AND "
-				+ "(LOWER(Body) LIKE '%hel  wrd%' "
+				+ "(LOWER(From) LIKE '%hel  wrd%' "
 				+ "OR LOWER(Subject) LIKE '%hel  wrd%' "
 				+ "OR LOWER('List-Id') LIKE '%hel  wrd%' "
-				+ "OR LOWER(From) LIKE '%hel  wrd%')" 
+				+ "OR LOWER(Body) LIKE '%hel  wrd%')" 
 		} );	
 		
 		params.add(new Object[] {"quoted field", "from:\"w r d\" hello ", QueryBuilderImpl.BASE + " AND "
 				+ "(LOWER(From) LIKE '%w r d%') "
-				+ "AND (LOWER(Body) LIKE '%hello%' "
+				+ "AND (LOWER(From) LIKE '%hello%' "
 				+ "OR LOWER(Subject) LIKE '%hello%' "
 				+ "OR LOWER('List-Id') LIKE '%hello%' "
-				+ "OR LOWER(From) LIKE '%hello%')" 
+				+ "OR LOWER(Body) LIKE '%hello%')" 
 		} );
 
-		//        params.add(new Object[] {"name", "", QueryBuilderImpl.BASE} );
 		return params;
 	}
 
