Merge branch 'mindexer-108'
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;
 }