diff --git a/dev-tools/eclipse/dot.classpath b/dev-tools/eclipse/dot.classpath
index ef007b4..416f4cf 100644
--- a/dev-tools/eclipse/dot.classpath
+++ b/dev-tools/eclipse/dot.classpath
@@ -38,14 +38,15 @@
 	<classpathentry kind="src" path="modules/analysis/stempel/src/java"/>
 	<classpathentry kind="src" path="modules/analysis/stempel/src/resources"/>
 	<classpathentry kind="src" path="modules/analysis/stempel/src/test"/>
+	<classpathentry kind="src" path="modules/analysis/morfologik/src/java"/>
+	<classpathentry kind="src" path="modules/analysis/morfologik/src/test"/>
 	<classpathentry kind="src" path="modules/benchmark/src/java"/>
 	<classpathentry kind="src" path="modules/benchmark/src/test"/>
 	<classpathentry kind="src" path="modules/common/src/java"/>
 	<classpathentry kind="src" path="modules/common/src/test"/>
 	<classpathentry kind="src" path="modules/grouping/src/java"/>
 	<classpathentry kind="src" path="modules/grouping/src/test"/>
-  <classpathentry kind="src" path="modules/queries/src/java"/>
-	<classpathentry kind="src" path="modules/queries/src/test"/>
+	<classpathentry kind="src" path="modules/queries/src/java"/>
 	<classpathentry kind="src" path="modules/suggest/src/java"/>
 	<classpathentry kind="src" path="modules/suggest/src/test"/>
 	<classpathentry kind="src" path="solr/src/java"/>
@@ -80,6 +81,9 @@
 	<classpathentry kind="lib" path="lucene/contrib/queries/lib/jakarta-regexp-1.4.jar"/>
 	<classpathentry kind="lib" path="modules/analysis/icu/lib/icu4j-4_8.jar"/>
 	<classpathentry kind="lib" path="modules/analysis/phonetic/lib/commons-codec-1.4.jar"/>
+	<classpathentry kind="lib" path="modules/analysis/morfologik/lib/morfologik-fsa-1.5.2.jar"/>
+	<classpathentry kind="lib" path="modules/analysis/morfologik/lib/morfologik-polish-1.5.2.jar"/>
+	<classpathentry kind="lib" path="modules/analysis/morfologik/lib/morfologik-stemming-1.5.2.jar"/>
 	<classpathentry kind="lib" path="modules/benchmark/lib/commons-beanutils-1.7.0.jar"/>
 	<classpathentry kind="lib" path="modules/benchmark/lib/commons-collections-3.1.jar"/>
 	<classpathentry kind="lib" path="modules/benchmark/lib/commons-compress-1.1.jar"/>
diff --git a/modules/analysis/LICENSE.txt b/modules/analysis/LICENSE.txt
index 255d251..e7b9831 100644
--- a/modules/analysis/LICENSE.txt
+++ b/modules/analysis/LICENSE.txt
@@ -263,3 +263,80 @@ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 SUCH DAMAGE.
+
+The following license applies to the Morfologik project:
+
+Copyright (c) 2006 Dawid Weiss
+Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, 
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, 
+    this list of conditions and the following disclaimer.
+    
+    * Redistributions in binary form must reproduce the above copyright notice, 
+    this list of conditions and the following disclaimer in the documentation 
+    and/or other materials provided with the distribution.
+    
+    * Neither the name of Morfologik nor the names of its contributors 
+    may be used to endorse or promote products derived from this software 
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+---
+
+The dictionary comes from Morfologik project. Morfologik uses data from 
+Polish ispell/myspell dictionary hosted at http://www.sjp.pl/slownik/en/ and 
+is licenced on the terms of (inter alia) LGPL and Creative Commons 
+ShareAlike. The part-of-speech tags were added in Morfologik project and
+are not found in the data from sjp.pl. The tagset is similar to IPI PAN
+tagset.
+
+---
+
+The following license applies to the Morfeusz project,
+used by org.apache.lucene.analysis.morfologik.
+
+BSD-licensed dictionary of Polish (SGJP)
+http://sgjp.pl/morfeusz/
+
+Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, 
+	    	 Marcin Woliński, Robert Wołosz
+
+All rights reserved.
+
+Redistribution and  use in  source and binary  forms, with  or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS
+OR  IMPLIED WARRANTIES,  INCLUDING, BUT  NOT LIMITED  TO,  THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.  IN NO EVENT  SHALL COPYRIGHT  HOLDERS OR  CONTRIBUTORS BE
+LIABLE FOR  ANY DIRECT,  INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES  (INCLUDING, BUT NOT LIMITED  TO, PROCUREMENT OF
+SUBSTITUTE  GOODS OR  SERVICES;  LOSS  OF USE,  DATA,  OR PROFITS;  OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED  AND ON ANY THEORY OF LIABILITY,
+WHETHER IN  CONTRACT, STRICT LIABILITY, OR  TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/modules/analysis/NOTICE.txt b/modules/analysis/NOTICE.txt
index aa55855..61d1022 100644
--- a/modules/analysis/NOTICE.txt
+++ b/modules/analysis/NOTICE.txt
@@ -62,3 +62,12 @@ WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/)
 is derived from Unicode data such as the Unicode Character Database. 
 See http://unicode.org/copyright.html for more details.
 
+The Morfologik analyzer (morfologik) includes BSD-licensed software
+developed by Dawid Weiss and Marcin Miłkowski (http://morfologik.blogspot.com/).
+
+Morfologik uses data from Polish ispell/myspell dictionary
+(http://www.sjp.pl/slownik/en/) licenced on the terms of (inter alia)
+LGPL and Creative Commons ShareAlike.
+
+Morfologic includes data from BSD-licensed dictionary of Polish (SGJP)
+(http://sgjp.pl/morfeusz/)
diff --git a/modules/analysis/README.txt b/modules/analysis/README.txt
index 95c73c3..2642268 100644
--- a/modules/analysis/README.txt
+++ b/modules/analysis/README.txt
@@ -35,11 +35,15 @@ lucene-analyzers-stempel-XX.jar
   An add-on analysis library that contains a universal algorithmic stemmer,
   including tables for the Polish language.
 
+lucene-analyzers-morfologik-XX.jar
+  An analyzer using the Morfologik stemming library.
+
 common/src/java
 icu/src/java
 phonetic/src/java
 smartcn/src/java
 stempel/src/java
+morfologik/src/java
   The source code for the ffve libraries.
 
 common/src/test
@@ -47,4 +51,5 @@ icu/src/test
 phonetic/src/test
 smartcn/src/test
 stempel/src/test
+morfologik/src/test
   Unit tests for the five libraries.
diff --git a/modules/analysis/build.xml b/modules/analysis/build.xml
index 4c299f0..5292da2 100644
--- a/modules/analysis/build.xml
+++ b/modules/analysis/build.xml
@@ -25,6 +25,7 @@
       - icu: Analyzers that use functionality from ICU
       - smartcn:	Smart Analyzer for Simplified Chinese Text
       - stempel:	Algorithmic Stemmer for Polish
+      - morfologik:	Morfologik Stemmer
   </description>
 
   <target name="common">
@@ -47,8 +48,12 @@
     <ant dir="stempel" />
   </target>
 
+  <target name="morfologik">
+    <ant dir="morfologik" />
+  </target>
+
   <target name="default" depends="compile"/>
-  <target name="compile" depends="common,icu,phonetic,smartcn,stempel" />
+  <target name="compile" depends="common,icu,phonetic,smartcn,stempel,morfologik" />
 
   <target name="clean">
     <ant dir="common" target="clean" />
@@ -56,6 +61,7 @@
     <ant dir="phonetic" target="clean" />
     <ant dir="smartcn" target="clean" />
     <ant dir="stempel" target="clean" />
+    <ant dir="morfologik" target="clean" />
   </target>
   <target name="validate">
     <ant dir="common" target="validate" />
@@ -63,6 +69,7 @@
     <ant dir="phonetic" target="validate" />
     <ant dir="smartcn" target="validate" />
     <ant dir="stempel" target="validate" />
+    <ant dir="morfologik" target="validate" />
   </target>
   <target name="compile-core">
     <ant dir="common" target="compile-core" />
@@ -70,6 +77,7 @@
     <ant dir="phonetic" target="compile-core" />
     <ant dir="smartcn" target="compile-core" />
     <ant dir="stempel" target="compile-core" />
+    <ant dir="morfologik" target="compile-core" />
   </target>
   <target name="compile-test">
     <ant dir="common" target="compile-test" />
@@ -77,6 +85,7 @@
     <ant dir="phonetic" target="compile-test" />
     <ant dir="smartcn" target="compile-test" />
     <ant dir="stempel" target="compile-test" />
+    <ant dir="morfologik" target="compile-test" />
   </target>
   <target name="test">
     <ant dir="common" target="test" />
@@ -84,6 +93,7 @@
     <ant dir="phonetic" target="test" />
     <ant dir="smartcn" target="test" />
     <ant dir="stempel" target="test" />
+    <ant dir="morfologik" target="test" />
   </target>
 
   <target name="build-artifacts-and-tests" depends="default,compile-test" />
@@ -94,6 +104,7 @@
     <ant dir="phonetic" target="dist-maven" />
     <ant dir="smartcn" target="dist-maven" />
     <ant dir="stempel" target="dist-maven" />
+    <ant dir="morfologik" target="dist-maven" />
   </target>  	
 
   <target name="javadocs">
@@ -102,6 +113,7 @@
     <ant dir="phonetic" target="javadocs" />
     <ant dir="smartcn" target="javadocs" />
     <ant dir="stempel" target="javadocs" />
+    <ant dir="morfologik" target="javadocs" />
   </target>  	
 
   <target name="javadocs-index.html">
@@ -110,6 +122,7 @@
     <ant dir="phonetic" target="javadocs-index.html" />
     <ant dir="smartcn" target="javadocs-index.html" />
     <ant dir="stempel" target="javadocs-index.html" />
+    <ant dir="morfologik" target="javadocs-index.html" />
   </target>
 	
 </project>
diff --git a/modules/analysis/morfologik/build.xml b/modules/analysis/morfologik/build.xml
new file mode 100644
index 0000000..7767d67
--- /dev/null
+++ b/modules/analysis/morfologik/build.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+ 
+        http://www.apache.org/licenses/LICENSE-2.0
+ 
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<project name="analyzers-morfologik" default="default">
+
+  <description>
+    Morfologik Analyzer
+  </description>
+	
+  <property name="build.dir" location="../build/morfologik" />
+  <property name="dist.dir" location="../dist/morfologik" />
+
+  <path id="additional.dependencies">
+    <fileset dir="lib" includes="morfologik-fsa-*.jar"/>
+    <fileset dir="lib" includes="morfologik-polish-*.jar"/>
+    <fileset dir="lib" includes="morfologik-stemming-*.jar"/>
+  </path>
+
+  <pathconvert property="project.classpath" targetos="unix" refid="additional.dependencies" />
+
+  <import file="../../../lucene/contrib/contrib-build.xml"/>
+
+  <module-uptodate name="analysis/common" jarfile="../build/common/lucene-analyzers-common-${version}.jar"
+    property="analyzers-common.uptodate" classpath.property="analyzers-common.jar"/>
+
+  <path id="classpath">
+    <pathelement path="${analyzers-common.jar}"/>
+    <path refid="base.classpath"/>
+  </path>
+
+  <path id="test.classpath">
+    <path refid="classpath"/>
+    <pathelement location="../../../lucene/build/classes/test-framework/"/>
+    <pathelement location="../../../lucene/build/classes/test/"/>
+    <path refid="junit-path"/>
+    <pathelement location="${build.dir}/classes/java"/>
+  </path>
+
+  <target name="compile-core" depends="build-analyzers-common, common.compile-core" />
+
+  <target name="build-analyzers-common" unless="analyzers-common.uptodate">
+    <echo>Morfologik building dependency ${analyzers-common.jar}</echo>
+    <ant antfile="../common/build.xml" target="default" inheritall="false" dir="../common" />
+  </target>
+</project>
diff --git a/modules/analysis/morfologik/lib/morfologik-fsa-1.5.2.jar b/modules/analysis/morfologik/lib/morfologik-fsa-1.5.2.jar
new file mode 100644
index 0000000..34c0f34
Binary files /dev/null and b/modules/analysis/morfologik/lib/morfologik-fsa-1.5.2.jar differ
diff --git a/modules/analysis/morfologik/lib/morfologik-fsa-LICENSE-BSD.txt b/modules/analysis/morfologik/lib/morfologik-fsa-LICENSE-BSD.txt
new file mode 100644
index 0000000..2684a83
--- /dev/null
+++ b/modules/analysis/morfologik/lib/morfologik-fsa-LICENSE-BSD.txt
@@ -0,0 +1,29 @@
+
+Copyright (c) 2006 Dawid Weiss
+Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, 
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, 
+    this list of conditions and the following disclaimer.
+    
+    * Redistributions in binary form must reproduce the above copyright notice, 
+    this list of conditions and the following disclaimer in the documentation 
+    and/or other materials provided with the distribution.
+    
+    * Neither the name of Morfologik nor the names of its contributors 
+    may be used to endorse or promote products derived from this software 
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/modules/analysis/morfologik/lib/morfologik-fsa-NOTICE.txt b/modules/analysis/morfologik/lib/morfologik-fsa-NOTICE.txt
new file mode 100644
index 0000000..18ba2f3
--- /dev/null
+++ b/modules/analysis/morfologik/lib/morfologik-fsa-NOTICE.txt
@@ -0,0 +1,2 @@
+This product includes BSD-licensed software developed by Dawid Weiss and Marcin Miłkowski
+(http://morfologik.blogspot.com/).
diff --git a/modules/analysis/morfologik/lib/morfologik-polish-1.5.2.jar b/modules/analysis/morfologik/lib/morfologik-polish-1.5.2.jar
new file mode 100644
index 0000000..ca2fa4d
Binary files /dev/null and b/modules/analysis/morfologik/lib/morfologik-polish-1.5.2.jar differ
diff --git a/modules/analysis/morfologik/lib/morfologik-polish-LICENSE-CCSA-BSD.txt b/modules/analysis/morfologik/lib/morfologik-polish-LICENSE-CCSA-BSD.txt
new file mode 100644
index 0000000..9cf51c2
--- /dev/null
+++ b/modules/analysis/morfologik/lib/morfologik-polish-LICENSE-CCSA-BSD.txt
@@ -0,0 +1,41 @@
+morfologik-polish, TERMS OF LICENCE
+
+This JAR contains and makes use of data from Polish ispell/myspell 
+dictionaries hosted at http://www.sjp.pl/slownik/en/ and is 
+licenced on the terms of (inter alia) LGPL or Creative Commons ShareAlike licenses.
+
+Part-of-speech tags were added in Morfologik project and are not found 
+in the data from sjp.pl.
+
+
+BSD-licensed dictionary of Polish (SGJP)
+http://sgjp.pl/morfeusz/
+
+Copyright © 2011 Zygmunt Saloni, Włodzimierz Gruszczyński, 
+	    	 Marcin Woliński, Robert Wołosz
+
+All rights reserved.
+
+Redistribution and  use in  source and binary  forms, with  or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS
+OR  IMPLIED WARRANTIES,  INCLUDING, BUT  NOT LIMITED  TO,  THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.  IN NO EVENT  SHALL COPYRIGHT  HOLDERS OR  CONTRIBUTORS BE
+LIABLE FOR  ANY DIRECT,  INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES  (INCLUDING, BUT NOT LIMITED  TO, PROCUREMENT OF
+SUBSTITUTE  GOODS OR  SERVICES;  LOSS  OF USE,  DATA,  OR PROFITS;  OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED  AND ON ANY THEORY OF LIABILITY,
+WHETHER IN  CONTRACT, STRICT LIABILITY, OR  TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/modules/analysis/morfologik/lib/morfologik-polish-NOTICE.txt b/modules/analysis/morfologik/lib/morfologik-polish-NOTICE.txt
new file mode 100644
index 0000000..6667b14
--- /dev/null
+++ b/modules/analysis/morfologik/lib/morfologik-polish-NOTICE.txt
@@ -0,0 +1,8 @@
+This product includes BSD-licensed software developed by Dawid Weiss and Marcin Miłkowski
+(http://morfologik.blogspot.com/).
+
+This product includes data from Polish ispell/myspell dictionary (http://www.sjp.pl/slownik/en/)
+licenced on the terms of (inter alia) LGPL and Creative Commons ShareAlike.
+
+This product includes data from BSD-licensed dictionary of Polish (SGJP)
+(http://sgjp.pl/morfeusz/)
diff --git a/modules/analysis/morfologik/lib/morfologik-stemming-1.5.2.jar b/modules/analysis/morfologik/lib/morfologik-stemming-1.5.2.jar
new file mode 100644
index 0000000..dec8226
Binary files /dev/null and b/modules/analysis/morfologik/lib/morfologik-stemming-1.5.2.jar differ
diff --git a/modules/analysis/morfologik/lib/morfologik-stemming-LICENSE-BSD.txt b/modules/analysis/morfologik/lib/morfologik-stemming-LICENSE-BSD.txt
new file mode 100644
index 0000000..2684a83
--- /dev/null
+++ b/modules/analysis/morfologik/lib/morfologik-stemming-LICENSE-BSD.txt
@@ -0,0 +1,29 @@
+
+Copyright (c) 2006 Dawid Weiss
+Copyright (c) 2007-2011 Dawid Weiss, Marcin Miłkowski
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, 
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, 
+    this list of conditions and the following disclaimer.
+    
+    * Redistributions in binary form must reproduce the above copyright notice, 
+    this list of conditions and the following disclaimer in the documentation 
+    and/or other materials provided with the distribution.
+    
+    * Neither the name of Morfologik nor the names of its contributors 
+    may be used to endorse or promote products derived from this software 
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/modules/analysis/morfologik/lib/morfologik-stemming-NOTICE.txt b/modules/analysis/morfologik/lib/morfologik-stemming-NOTICE.txt
new file mode 100644
index 0000000..18ba2f3
--- /dev/null
+++ b/modules/analysis/morfologik/lib/morfologik-stemming-NOTICE.txt
@@ -0,0 +1,2 @@
+This product includes BSD-licensed software developed by Dawid Weiss and Marcin Miłkowski
+(http://morfologik.blogspot.com/).
diff --git a/modules/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/MorfologikAnalyzer.java b/modules/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/MorfologikAnalyzer.java
new file mode 100644
index 0000000..11c14a3
--- /dev/null
+++ b/modules/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/MorfologikAnalyzer.java
@@ -0,0 +1,91 @@
+// -*- c-basic-offset: 2 -*-
+package org.apache.lucene.analysis.morfologik;
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.Reader;
+
+import org.apache.lucene.analysis.Tokenizer;
+import org.apache.lucene.analysis.core.LowerCaseFilter;
+import org.apache.lucene.analysis.standard.StandardFilter;
+import org.apache.lucene.analysis.standard.StandardTokenizer;
+import org.apache.lucene.analysis.util.ReusableAnalyzerBase;
+import org.apache.lucene.util.Version;
+
+import morfologik.stemming.PolishStemmer.DICTIONARY;
+
+/**
+ * {@link org.apache.lucene.analysis.Analyzer} using Morfologik library.
+ * @see <a href="http://morfologik.blogspot.com/">Morfologik project page</a>
+ */
+public class MorfologikAnalyzer extends ReusableAnalyzerBase {
+
+  private final DICTIONARY dictionary;
+  private final Version version;
+
+  /**
+   * Builds an analyzer for a given PolishStemmer.DICTIONARY enum.
+   * 
+   * @param vers
+   *          lucene compatibility version
+   * @param dict
+   *          A constant specifying which dictionary to choose. See the
+   *          Morfologik documentation for details or use the default.
+   */
+  public MorfologikAnalyzer(final Version vers, final DICTIONARY dict) {
+    this.version = vers;
+    this.dictionary = dict;
+  }
+
+  /**
+   * Builds an analyzer for an original MORFOLOGIK dictionary.
+   * 
+   * @param vers         lucene compatibility version
+   */
+  public MorfologikAnalyzer(final Version vers) {
+    this(vers, DICTIONARY.MORFOLOGIK);
+  }
+
+  /**
+   * Creates a
+   * {@link ReusableAnalyzerBase.TokenStreamComponents}
+   * which tokenizes all the text in the provided {@link Reader}.
+   * 
+   * @param field ignored field name
+   * @param reader source of tokens
+   * 
+   * @return A
+   *         {@link ReusableAnalyzerBase.TokenStreamComponents}
+   *         built from an {@link StandardTokenizer} filtered with
+   *         {@link StandardFilter}, {@link LowerCaseFilter} and {@link MorfologikFilter}.
+   */
+  @Override
+  protected TokenStreamComponents createComponents(final String field, final Reader reader) {
+    final Tokenizer src = new StandardTokenizer(this.version, reader);
+    
+    // TODO: lower-casing is a hack here because Morfologik contains upper case surface forms
+    // (and upper case lemmas). Lowercasing should be a fallback, not default.
+    return new TokenStreamComponents(
+      src,
+      new MorfologikFilter(
+        new LowerCaseFilter(
+          this.version,
+          new StandardFilter(this.version, src)),
+        this.dictionary));
+  }
+}
diff --git a/modules/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/MorfologikFilter.java b/modules/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/MorfologikFilter.java
new file mode 100644
index 0000000..10cfa28
--- /dev/null
+++ b/modules/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/MorfologikFilter.java
@@ -0,0 +1,97 @@
+// -*- c-basic-offset: 2 -*-
+package org.apache.lucene.analysis.morfologik;
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.IOException;
+import java.util.*;
+
+import org.apache.lucene.analysis.TokenFilter;
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
+import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
+
+import morfologik.stemming.IStemmer;
+import morfologik.stemming.PolishStemmer;
+import morfologik.stemming.PolishStemmer.DICTIONARY;
+import morfologik.stemming.WordData;
+
+/**
+ * {@link TokenFilter} using Morfologik library.
+ * @see <a href="http://morfologik.blogspot.com/">Morfologik project page</a>
+ */
+public class MorfologikFilter extends TokenFilter {
+  // TODO: it'd be nice to expose morphosyntactic tags too, since they're available... 
+
+  private final CharTermAttribute termAtt             = addAttribute(CharTermAttribute.class);
+  private final PositionIncrementAttribute posIncrAtt = addAttribute(PositionIncrementAttribute.class);
+
+  private State current;
+  private final TokenStream input;
+  private final IStemmer stemmer;
+  
+  private List<WordData> lemmaList;
+  private int lemmaListIndex;
+
+  /**
+   * Builds a filter for given PolishStemmer.DICTIONARY enum.
+   * 
+   * @param in   input token stream
+   * @param dict PolishStemmer.DICTIONARY enum
+   */
+  public MorfologikFilter(final TokenStream in, final DICTIONARY dict) {
+    super(in);
+    this.input = in;
+    this.stemmer = new PolishStemmer(dict);
+  }
+
+  private void popNextLemma() {
+    termAtt.setEmpty().append(
+        lemmaList.get(--lemmaListIndex).getStem());
+  }
+
+  /** Retrieves the next token (possibly from the list of lemmas). */
+  @Override
+  public final boolean incrementToken() throws IOException {
+    if (lemmaListIndex > 0) {
+      restoreState(current);
+      posIncrAtt.setPositionIncrement(0);
+      popNextLemma();
+      return true;
+    } else if (this.input.incrementToken()) {
+      lemmaList = this.stemmer.lookup(termAtt);
+      lemmaListIndex = lemmaList.size();
+
+      if (lemmaListIndex > 0) {
+        current = captureState();
+        popNextLemma();
+      }
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  /** Resets stems accumulator and hands over to superclass. */
+  @Override
+  public void reset() throws IOException {
+    lemmaListIndex = 0;
+    lemmaList = Collections.emptyList();
+    super.reset();
+  }
+}
diff --git a/modules/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/package.html b/modules/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/package.html
new file mode 100644
index 0000000..6b67d0e
--- /dev/null
+++ b/modules/analysis/morfologik/src/java/org/apache/lucene/analysis/morfologik/package.html
@@ -0,0 +1,34 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
+  </head>
+  <body>
+    <p>
+      This package provides dictionary-driven lemmatization ("accurate stemming")
+      filter and analyzer for the Polish Language, driven by the
+      <a href="http://morfologik.blogspot.com/">Morfologik library</a> developed 
+      by Dawid Weiss and Marcin Miłkowski.
+    </p>
+    <p>
+    The MorfologikFilter yields one or more terms for each token. Each
+    of those terms is given the same position in the index.
+    </p>
+  </body>
+</html>
diff --git a/modules/analysis/morfologik/src/java/overview.html b/modules/analysis/morfologik/src/java/overview.html
new file mode 100644
index 0000000..6b67d0e
--- /dev/null
+++ b/modules/analysis/morfologik/src/java/overview.html
@@ -0,0 +1,34 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
+  </head>
+  <body>
+    <p>
+      This package provides dictionary-driven lemmatization ("accurate stemming")
+      filter and analyzer for the Polish Language, driven by the
+      <a href="http://morfologik.blogspot.com/">Morfologik library</a> developed 
+      by Dawid Weiss and Marcin Miłkowski.
+    </p>
+    <p>
+    The MorfologikFilter yields one or more terms for each token. Each
+    of those terms is given the same position in the index.
+    </p>
+  </body>
+</html>
diff --git a/modules/analysis/morfologik/src/test/org/apache/lucene/analysis/morfologik/TestMorfologikAnalyzer.java b/modules/analysis/morfologik/src/test/org/apache/lucene/analysis/morfologik/TestMorfologikAnalyzer.java
new file mode 100644
index 0000000..9d9f146
--- /dev/null
+++ b/modules/analysis/morfologik/src/test/org/apache/lucene/analysis/morfologik/TestMorfologikAnalyzer.java
@@ -0,0 +1,71 @@
+// -*- c-basic-offset: 2 -*-
+package org.apache.lucene.analysis.morfologik;
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.IOException;
+import java.io.StringReader;
+
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.BaseTokenStreamTestCase;
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
+
+public class TestMorfologikAnalyzer extends BaseTokenStreamTestCase {
+
+  private Analyzer getTestAnalyzer() {
+    return new MorfologikAnalyzer(TEST_VERSION_CURRENT);
+  }
+
+  /** Test stemming of single tokens with Morfologik library. */
+  public final void testSingleTokens() throws IOException {
+    Analyzer a = getTestAnalyzer();
+    assertAnalyzesToReuse(a, "a", new String[] { "a" });
+    assertAnalyzesToReuse(a, "liście", new String[] { "lista", "list", "liść" });
+    assertAnalyzesToReuse(a, "danych", new String[] { "dać", "dane", "dany" });
+    assertAnalyzesToReuse(a, "ęóąśłżźćń", new String[] { "ęóąśłżźćń" });
+  }
+
+  /** Test stemming of multiple tokens and proper term metrics. */
+  public final void testMultipleTokens() throws IOException {
+    Analyzer a = getTestAnalyzer();
+    assertAnalyzesToReuse(
+      a,
+      "liście danych",
+      new String[] { "lista", "list", "liść", "dać", "dane", "dany" },
+      new int[] { 0, 0, 0, 7, 7, 7 },
+      new int[] { 6, 6, 6, 13, 13, 13 },
+      new int[] { 1, 0, 0, 1, 0, 0 });
+  }
+
+  /** Test reuse of MorfologikFilter with leftover stems. */
+  public final void testLeftoverStems() throws IOException {
+    Analyzer a = getTestAnalyzer();
+    TokenStream ts_1 = a.reusableTokenStream("dummy", new StringReader("liście"));
+    CharTermAttribute termAtt_1 = ts_1.getAttribute(CharTermAttribute.class);
+    ts_1.reset();
+    ts_1.incrementToken();
+    assertEquals("first stream", "lista", termAtt_1.toString());
+
+    TokenStream ts_2 = a.reusableTokenStream("dummy", new StringReader("danych"));
+    CharTermAttribute termAtt_2 = ts_2.getAttribute(CharTermAttribute.class);
+    ts_2.reset();
+    ts_2.incrementToken();
+    assertEquals("second stream", "dać", termAtt_2.toString());
+  }
+}
