Index: trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 8197)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 8198)
@@ -435,4 +435,5 @@
                 .addKeyword("role:", "role:", tr("objects with given role in a relation"))
                 .addKeyword("areasize:<i>-100</i>", "areasize:", tr("closed ways with an area of 100 m\u00b2"))
+                .addKeyword("waylength:<i>200-</i>", "waylength:", tr("ways with a length of 200 m or more"))
                 , GBC.eol());
             right.add(new SearchKeywordRow(hcbSearchString)
Index: trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 8197)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 8198)
@@ -99,5 +99,5 @@
     public class CoreSimpleMatchFactory implements SimpleMatchFactory {
         private Collection<String> keywords = Arrays.asList("id", "version",
-                "changeset", "nodes", "tags", "areasize", "modified", "selected",
+                "changeset", "nodes", "tags", "areasize", "waylength", "modified", "selected",
                 "incomplete", "untagged", "closed", "new", "indownloadedarea",
                 "allindownloadedarea", "inview", "allinview", "timestamp", "nth", "nth%");
@@ -141,4 +141,6 @@
                     case "areasize":
                         return new AreaSize(tokenizer);
+                    case "waylength":
+                        return new WayLength(tokenizer);
                     case "nth":
                         return new Nth(tokenizer, false);
@@ -1115,4 +1117,31 @@
 
     /**
+     * Matches if the length of a way is within the given range
+     */
+    private static class WayLength extends RangeMatch {
+
+        public WayLength(Range range) {
+            super(range);
+        }
+
+        public WayLength(PushbackTokenizer tokenizer) throws ParseError {
+            this(tokenizer.readRange(tr("Range of numbers expected")));
+        }
+
+        @Override
+        protected Long getNumber(OsmPrimitive osm) {
+            if (!(osm instanceof Way))
+                return null;
+            Way way = (Way) osm;
+            return (long) way.getLength();
+        }
+
+        @Override
+        protected String getString() {
+            return "waylength";
+        }
+    }
+
+    /**
      * Matches objects within the given bounds.
      */
