diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java
index fa07aff..d8b5500 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java
@@ -40,6 +40,7 @@
 import org.apache.maven.index.context.IndexingContext;
 import org.apache.maven.index.context.MergedIndexingContext;
 import org.apache.maven.index.expr.SearchExpression;
+import org.apache.maven.index.expr.SearchTypedStringSearchExpression;
 import org.apache.maven.index.expr.SourcedSearchExpression;
 import org.apache.maven.index.util.IndexCreatorSorter;
 import org.codehaus.plexus.util.IOUtil;
@@ -108,6 +109,17 @@
     // Modifying
     // ----------------------------------------------------------------------------
 
+    public void addArtifactToIndex( ArtifactContext ac, IndexingContext context)
+        throws IOException
+    {
+        if ( ac != null )
+        {
+            indexerEngine.update( context, ac );
+
+            context.commit();
+        }
+    }
+
     public void addArtifactsToIndex( Collection<ArtifactContext> ac, IndexingContext context )
         throws IOException
     {
@@ -244,6 +256,11 @@
         }
     }
 
+    public Query constructQuery( Field field, String expression, SearchType searchType )
+        throws IllegalArgumentException
+    {
+        return constructQuery( field, new SearchTypedStringSearchExpression( expression, searchType ));
+    }
     // ==
 
     private static final char[] DIGITS = "0123456789abcdef".toCharArray();
diff --git a/indexer-core/src/main/java/org/apache/maven/index/Indexer.java b/indexer-core/src/main/java/org/apache/maven/index/Indexer.java
index 6cd9f67..db56179 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/Indexer.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/Indexer.java
@@ -110,6 +110,16 @@
 
     /**
      * Adds the passed in artifact contexts to passed in indexing context.
+     *
+     * @param ac
+     * @param context
+     * @throws IOException
+     */
+    void addArtifactToIndex( ArtifactContext ac, IndexingContext context )
+        throws IOException;
+
+    /**
+     * Adds the passed in artifact contexts to passed in indexing context.
      * 
      * @param acs
      * @param context
@@ -210,4 +220,16 @@
      */
     Query constructQuery( Field field, SearchExpression expression )
         throws IllegalArgumentException;
+
+    /**
+     * Helper method to construct Lucene query for given field without need for knowledge (on caller side) HOW is a
+     * field indexed, and WHAT query is needed to achieve that search.
+     *
+     * @param field
+     * @param expression
+     * @param searchType
+     * @return
+     * @throws IllegalArgumentException
+     */
+    Query constructQuery( Field field, String expression, SearchType searchType) throws IllegalArgumentException;
 }
