Index: trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 6743)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 6744)
@@ -20,4 +20,5 @@
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
@@ -100,4 +101,8 @@
         if(searchHistory.isEmpty() || !s.equals(searchHistory.getFirst())) {
             searchHistory.addFirst(new SearchSetting(s));
+        } else if (searchHistory.contains(s)) {
+            // move existing entry to front, fixes #8032 - search history loses entries when re-using queries
+            searchHistory.remove(s);
+            searchHistory.addFirst(new SearchSetting(s));
         }
         int maxsize = Main.pref.getInteger("search.history-size", DEFAULT_SEARCH_HISTORY_SIZE);
@@ -105,5 +110,5 @@
             searchHistory.removeLast();
         }
-        List<String> savedHistory = new ArrayList<String>(searchHistory.size());
+        LinkedHashSet<String> savedHistory = new LinkedHashSet<String>(searchHistory.size());
         for (SearchSetting item: searchHistory) {
             savedHistory.add(item.writeToString());
