diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java
index f47bead..4900bac 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java
@@ -200,11 +200,6 @@
             return null;
         }
 
-        if ( query.startsWith( "*" ) || query.startsWith( "?" ) )
-        {
-            throw new ParseException( "Query cannot start with '*' or '?'!" );
-        }
-
         if ( Field.NOT_PRESENT.equals( query ) )
         {
             return new WildcardQuery( new Term( indexerField.getKey(), "*" ) );
diff --git a/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java
index 1af94e4..5b34d49 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java
@@ -213,19 +213,10 @@
             // "-" in the name
             // New in 4.0! constructquery do throw error on wrong input! I left in old call and checking it fails,
             // and then added "new" call with proper query syntax!
-            Query q;
-            try
-            {
-                q = nexusIndexer.constructQuery( MAVEN.ARTIFACT_ID, "*-logging", SearchType.SCORED );
 
-                fail( "Input is invalid, query cannot start with *!" );
-            }
-            catch ( IllegalArgumentException e )
-            {
-                // good, now let's do it again with good input:
-                // Note: since queries are really parsed now, the leading "-" is wrong too
-                q = nexusIndexer.constructQuery( MAVEN.ARTIFACT_ID, "logging", SearchType.SCORED );
-            }
+            // Since Lucene 5.x can cope with wildcard prefixes, this case is not valid anymore
+            // see https://issues.apache.org/jira/browse/MINDEXER-108
+            Query q = nexusIndexer.constructQuery( MAVEN.ARTIFACT_ID, "*-logging", SearchType.SCORED );
 
             GroupedSearchRequest request = new GroupedSearchRequest( q, new GAGrouping() );
 
@@ -565,4 +556,32 @@
         }
     }
 
+    public void testPrefixWildcard()
+        throws Exception
+    {
+        // see https://issues.apache.org/jira/browse/MINDEXER-108
+        IteratorSearchRequest request =
+            new IteratorSearchRequest( nexusIndexer.constructQuery( MAVEN.GROUP_ID, "*.forge", SearchType.EXACT ) );
+
+        // two candidates (see src/test/repo):
+        // org.terracotta.forge:forge-parent:1.0.5
+        // org.terracotta.forge:archetype-parent:1.0.1
+
+        IteratorSearchResponse response = nexusIndexer.searchIterator( request );
+
+        try
+        {
+            assertEquals( response.getResults().toString(), 2, response.getTotalHitsCount() );
+
+            for ( ArtifactInfo ai : response )
+            {
+                assertEquals( ai.getGroupId(), "org.terracotta.forge" );
+            }
+        }
+        finally
+        {
+            response.close();
+        }
+    }
+
 }
diff --git a/pom.xml b/pom.xml
index 1ee9394..e2eff45 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,7 +88,7 @@
     <failsafe.redirectTestOutputToFile>true</failsafe.redirectTestOutputToFile>
 
     <eclipse-sisu.version>0.3.3</eclipse-sisu.version>
-    <lucene.version>5.5.4</lucene.version>
+    <lucene.version>5.5.5</lucene.version>
     <maven.version>3.5.2</maven.version>
     <resolver.version>1.1.0</resolver.version>
     <truezip.version>7.7.10</truezip.version>
