Index: src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitQueryParser.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitQueryParser.java (revision 889522) +++ src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitQueryParser.java (working copy) @@ -83,6 +83,9 @@ rewritten.append("\\"); } rewritten.append('~'); + } else if (textsearch.charAt(i) == ':') { + // fields as known in lucene are not supported + rewritten.append("\\:"); } else { if (escaped) { rewritten.append('\\'); Index: src/test/java/org/apache/jackrabbit/core/query/FulltextQueryTest.java =================================================================== --- src/test/java/org/apache/jackrabbit/core/query/FulltextQueryTest.java (revision 889522) +++ src/test/java/org/apache/jackrabbit/core/query/FulltextQueryTest.java (working copy) @@ -16,7 +16,6 @@ */ package org.apache.jackrabbit.core.query; -import java.io.IOException; import java.io.InputStream; import javax.jcr.Node; @@ -26,8 +25,6 @@ import javax.jcr.query.Query; import javax.jcr.query.QueryResult; -import org.apache.commons.io.IOUtils; - /** * Performs tests with the CONTAINS function. */ @@ -266,6 +263,10 @@ executeContainsQuery("max&moritz", content, true); } + public void testColonInContains() throws RepositoryException { + executeContainsQuery("foo:bar", "foo:bar", true); + } + /** * Executes a query and checks if the query matched the test node. *