You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sa...@apache.org on 2011/06/02 23:15:02 UTC

svn commit: r1130815 - in /lucene/dev/branches/solr2452: ./ dev-tools/eclipse/ dev-tools/idea/.idea/ dev-tools/idea/solr/ dev-tools/idea/solr/contrib/analysis-extras/ dev-tools/idea/solr/contrib/clustering/ dev-tools/idea/solr/contrib/dataimporthandler...

Author: sarowe
Date: Thu Jun  2 21:15:00 2011
New Revision: 1130815

URL: http://svn.apache.org/viewvc?rev=1130815&view=rev
Log:
SOLR-2452: merged with trunk up to r1130696; finished Solr contrib layout switch (src/main/java/ => src/java/, etc.) in the Maven, Eclipse, and IntelliJ configurations; restored two directories that were dropped as part of the layout switch: solr/contrib/dataimporthandler/src/main/webapp/ => src/webapp/, and solr/contrib/uima/src/main/resources => src/resources/; added jetty.insecurerandom sysprop setting to test-macro in lucene/common-build.xml

Added:
    lucene/dev/branches/solr2452/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData1.java
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData1.java
    lucene/dev/branches/solr2452/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData2.java
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData2.java
    lucene/dev/branches/solr2452/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData3.java
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData3.java
    lucene/dev/branches/solr2452/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData4.java
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData4.java
    lucene/dev/branches/solr2452/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData5.java
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData5.java
    lucene/dev/branches/solr2452/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData6.java
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData6.java
    lucene/dev/branches/solr2452/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData7.java
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData7.java
    lucene/dev/branches/solr2452/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData8.java
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemData8.java
    lucene/dev/branches/solr2452/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemFilter.java
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemFilter.java
    lucene/dev/branches/solr2452/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemmer.java
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemmer.java
    lucene/dev/branches/solr2452/modules/analysis/common/src/java/org/apache/lucene/analysis/util/OpenStringBuilder.java
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/util/OpenStringBuilder.java
    lucene/dev/branches/solr2452/modules/analysis/common/src/test/org/apache/lucene/analysis/en/TestKStemmer.java
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/en/TestKStemmer.java
    lucene/dev/branches/solr2452/modules/analysis/common/src/test/org/apache/lucene/analysis/en/kstemTestData.zip
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/en/kstemTestData.zip
    lucene/dev/branches/solr2452/modules/analysis/icu/lib/icu4j-4_8.jar
      - copied unchanged from r1130703, lucene/dev/trunk/modules/analysis/icu/lib/icu4j-4_8.jar
    lucene/dev/branches/solr2452/modules/grouping/LICENSE.txt
      - copied unchanged from r1130703, lucene/dev/trunk/modules/grouping/LICENSE.txt
    lucene/dev/branches/solr2452/modules/grouping/NOTICE.txt
      - copied unchanged from r1130703, lucene/dev/trunk/modules/grouping/NOTICE.txt
    lucene/dev/branches/solr2452/modules/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java
      - copied unchanged from r1130703, lucene/dev/trunk/modules/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java
    lucene/dev/branches/solr2452/modules/suggest/LICENSE.txt
      - copied unchanged from r1130703, lucene/dev/trunk/modules/suggest/LICENSE.txt
    lucene/dev/branches/solr2452/modules/suggest/NOTICE.txt
      - copied unchanged from r1130703, lucene/dev/trunk/modules/suggest/NOTICE.txt
    lucene/dev/branches/solr2452/solr/contrib/analysis-extras/lib/icu4j-4_8.jar
      - copied unchanged from r1130703, lucene/dev/trunk/solr/contrib/analysis-extras/lib/icu4j-4_8.jar
    lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/src/webapp/
      - copied from r1129204, lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/src/main/webapp/
    lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/src/webapp/admin/
      - copied from r1129204, lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/src/main/webapp/admin/
    lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/src/webapp/admin/dataimport.jsp
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/src/main/webapp/admin/dataimport.jsp
    lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/src/webapp/admin/debug.jsp
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/src/main/webapp/admin/debug.jsp
    lucene/dev/branches/solr2452/solr/contrib/extraction/lib/icu4j-4_8.jar
      - copied unchanged from r1130703, lucene/dev/trunk/solr/contrib/extraction/lib/icu4j-4_8.jar
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/
      - copied from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/
      - copied from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/
      - copied from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/uima/
      - copied from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/uima/
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/uima/desc/
      - copied from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/uima/desc/
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/uima/desc/AggregateSentenceAE.xml
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/uima/desc/AggregateSentenceAE.xml
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/uima/desc/HmmTagger.xml
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/uima/desc/HmmTagger.xml
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/uima/desc/OpenCalaisAnnotator.xml
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/uima/desc/OpenCalaisAnnotator.xml
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/uima/desc/OverridingParamsExtServicesAE.xml
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/uima/desc/OverridingParamsExtServicesAE.xml
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/uima/desc/TextCategorizationAEDescriptor.xml
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/uima/desc/TextCategorizationAEDescriptor.xml
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/uima/desc/TextConceptTaggingAEDescriptor.xml
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/uima/desc/TextConceptTaggingAEDescriptor.xml
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/uima/desc/TextKeywordExtractionAEDescriptor.xml
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/uima/desc/TextKeywordExtractionAEDescriptor.xml
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/uima/desc/TextLanguageDetectionAEDescriptor.xml
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/uima/desc/TextLanguageDetectionAEDescriptor.xml
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/uima/desc/TextRankedEntityExtractionAEDescriptor.xml
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/uima/desc/TextRankedEntityExtractionAEDescriptor.xml
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/uima/desc/WhitespaceTokenizer.xml
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/uima/desc/WhitespaceTokenizer.xml
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/org/apache/uima/desc/baseAlchemyTypeSystemDescriptor.xml
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/org/apache/uima/desc/baseAlchemyTypeSystemDescriptor.xml
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/solr/
      - copied from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/solr/
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/solr/conf/
      - copied from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/solr/conf/
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/solr/conf/aggregate-uima-config.xml
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/solr/conf/aggregate-uima-config.xml
    lucene/dev/branches/solr2452/solr/contrib/uima/src/resources/solr/conf/uima-fields.xml
      - copied unchanged from r1129204, lucene/dev/branches/solr2452/solr/contrib/uima/src/main/resources/solr/conf/uima-fields.xml
    lucene/dev/branches/solr2452/solr/src/java/org/apache/solr/analysis/KStemFilterFactory.java
      - copied unchanged from r1130703, lucene/dev/trunk/solr/src/java/org/apache/solr/analysis/KStemFilterFactory.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/analysis/TestKStemFilterFactory.java
      - copied unchanged from r1130703, lucene/dev/trunk/solr/src/test/org/apache/solr/analysis/TestKStemFilterFactory.java
Removed:
    lucene/dev/branches/solr2452/modules/analysis/icu/lib/icu4j-4_6.jar
    lucene/dev/branches/solr2452/modules/analysis/icu/lib/lucene-icu4j-pom.xml.template
    lucene/dev/branches/solr2452/solr/contrib/analysis-extras/lib/icu4j-4_6.jar
    lucene/dev/branches/solr2452/solr/contrib/extraction/lib/icu4j-4_6.jar
Modified:
    lucene/dev/branches/solr2452/   (props changed)
    lucene/dev/branches/solr2452/dev-tools/eclipse/dot.classpath
    lucene/dev/branches/solr2452/dev-tools/idea/.idea/workspace.xml
    lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/analysis-extras/analysis-extras.iml
    lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/clustering/clustering.iml
    lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/dataimporthandler-extras/dataimporthandler-extras.iml
    lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/dataimporthandler/dataimporthandler.iml
    lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/extraction/extraction.iml
    lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/uima/uima.iml
    lucene/dev/branches/solr2452/dev-tools/idea/solr/solr.iml
    lucene/dev/branches/solr2452/dev-tools/maven/modules/analysis/icu/pom.xml.template
    lucene/dev/branches/solr2452/dev-tools/maven/pom.xml.template
    lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/analysis-extras/pom.xml.template
    lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/clustering/pom.xml.template
    lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/dataimporthandler-extras/pom.xml.template
    lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/dataimporthandler/pom.xml.template
    lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/extraction/pom.xml.template
    lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/uima/pom.xml.template
    lucene/dev/branches/solr2452/lucene/   (props changed)
    lucene/dev/branches/solr2452/lucene/CHANGES.txt
    lucene/dev/branches/solr2452/lucene/common-build.xml
    lucene/dev/branches/solr2452/lucene/contrib/CHANGES.txt
    lucene/dev/branches/solr2452/modules/analysis/LICENSE.txt
    lucene/dev/branches/solr2452/modules/analysis/NOTICE.txt
    lucene/dev/branches/solr2452/modules/analysis/icu/build.xml
    lucene/dev/branches/solr2452/modules/analysis/icu/lib/icu4j-NOTICE.txt
    lucene/dev/branches/solr2452/modules/analysis/icu/src/tools/java/org/apache/lucene/analysis/icu/RBBIRuleCompiler.java
    lucene/dev/branches/solr2452/modules/grouping/src/java/org/apache/lucene/search/grouping/package.html
    lucene/dev/branches/solr2452/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java
    lucene/dev/branches/solr2452/solr/   (props changed)
    lucene/dev/branches/solr2452/solr/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/solr2452/solr/LICENSE.txt   (contents, props changed)
    lucene/dev/branches/solr2452/solr/NOTICE.txt   (contents, props changed)
    lucene/dev/branches/solr2452/solr/README.txt   (props changed)
    lucene/dev/branches/solr2452/solr/build.xml   (props changed)
    lucene/dev/branches/solr2452/solr/client/   (props changed)
    lucene/dev/branches/solr2452/solr/common-build.xml   (props changed)
    lucene/dev/branches/solr2452/solr/contrib/   (props changed)
    lucene/dev/branches/solr2452/solr/example/   (props changed)
    lucene/dev/branches/solr2452/solr/lib/   (props changed)
    lucene/dev/branches/solr2452/solr/site/   (props changed)
    lucene/dev/branches/solr2452/solr/src/   (props changed)
    lucene/dev/branches/solr2452/solr/testlogging.properties   (props changed)

Modified: lucene/dev/branches/solr2452/dev-tools/eclipse/dot.classpath
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/eclipse/dot.classpath?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/eclipse/dot.classpath (original)
+++ lucene/dev/branches/solr2452/dev-tools/eclipse/dot.classpath Thu Jun  2 21:15:00 2011
@@ -54,27 +54,27 @@
 	<classpathentry kind="src" path="solr/contrib/analysis-extras/src/java"/>
 	<classpathentry kind="src" path="solr/contrib/analysis-extras/src/test"/>
 	<classpathentry kind="src" path="solr/contrib/analysis-extras/src/test-files"/>
-	<classpathentry kind="src" path="solr/contrib/clustering/src/main/java"/>
-	<classpathentry kind="src" path="solr/contrib/clustering/src/test/java"/>
-	<classpathentry kind="src" path="solr/contrib/clustering/src/test/resources"/>
-	<classpathentry kind="src" path="solr/contrib/dataimporthandler/src/main/java"/>
-	<classpathentry kind="src" path="solr/contrib/dataimporthandler/src/test/java"/>
-	<classpathentry kind="src" path="solr/contrib/dataimporthandler/src/test/resources"/>
-	<classpathentry kind="src" path="solr/contrib/dataimporthandler/src/extras/main/java"/>
-	<classpathentry kind="src" path="solr/contrib/dataimporthandler/src/extras/test/java"/>
-	<classpathentry kind="src" path="solr/contrib/dataimporthandler/src/extras/test/resources"/>
-	<classpathentry kind="src" path="solr/contrib/extraction/src/main/java"/>
-	<classpathentry kind="src" path="solr/contrib/extraction/src/test/java"/>
-	<classpathentry kind="src" path="solr/contrib/extraction/src/test/resources"/>
-	<classpathentry kind="src" path="solr/contrib/uima/src/main/java"/>
-	<classpathentry kind="src" path="solr/contrib/uima/src/main/resources"/>
-	<classpathentry kind="src" path="solr/contrib/uima/src/test/java"/>
-	<classpathentry kind="src" path="solr/contrib/uima/src/test/resources"/>
+	<classpathentry kind="src" path="solr/contrib/clustering/src/java"/>
+	<classpathentry kind="src" path="solr/contrib/clustering/src/test"/>
+	<classpathentry kind="src" path="solr/contrib/clustering/src/test-files"/>
+	<classpathentry kind="src" path="solr/contrib/dataimporthandler/src/java"/>
+	<classpathentry kind="src" path="solr/contrib/dataimporthandler/src/test"/>
+	<classpathentry kind="src" path="solr/contrib/dataimporthandler/src/test-files"/>
+	<classpathentry kind="src" path="solr/contrib/dataimporthandler-extras/src/java"/>
+	<classpathentry kind="src" path="solr/contrib/dataimporthandler-extras/src/test"/>
+	<classpathentry kind="src" path="solr/contrib/dataimporthandler-extras/src/test-files"/>
+	<classpathentry kind="src" path="solr/contrib/extraction/src/java"/>
+	<classpathentry kind="src" path="solr/contrib/extraction/src/test"/>
+	<classpathentry kind="src" path="solr/contrib/extraction/src/test-files"/>
+	<classpathentry kind="src" path="solr/contrib/uima/src/java"/>
+	<classpathentry kind="src" path="solr/contrib/uima/src/resources"/>
+	<classpathentry kind="src" path="solr/contrib/uima/src/test"/>
+	<classpathentry kind="src" path="solr/contrib/uima/src/test-files"/>
 	<classpathentry kind="lib" path="lucene/lib/ant-1.7.1.jar"/>
 	<classpathentry kind="lib" path="lucene/lib/ant-junit-1.7.1.jar"/>
 	<classpathentry kind="lib" path="lucene/lib/junit-4.7.jar"/>
 	<classpathentry kind="lib" path="lucene/contrib/queries/lib/jakarta-regexp-1.4.jar"/>
-	<classpathentry kind="lib" path="modules/analysis/icu/lib/icu4j-4_6.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/benchmark/lib/commons-beanutils-1.7.0.jar"/>
 	<classpathentry kind="lib" path="modules/benchmark/lib/commons-collections-3.1.jar"/>

Modified: lucene/dev/branches/solr2452/dev-tools/idea/.idea/workspace.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/idea/.idea/workspace.xml?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/idea/.idea/workspace.xml (original)
+++ lucene/dev/branches/solr2452/dev-tools/idea/.idea/workspace.xml Thu Jun  2 21:15:00 2011
@@ -5,7 +5,7 @@
       <module name="analysis-extras" />
       <option name="TEST_OBJECT" value="package" />
       <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/solr/build/contrib/analysis-extras" />
-      <option name="VM_PARAMETERS" value="-ea -Dtests.luceneMatchVersion=4.0 -DtempDir=temp" />
+      <option name="VM_PARAMETERS" value="-ea -Dtests.luceneMatchVersion=4.0 -DtempDir=temp -Djetty.testMode=1 -Djetty.insecurerandom=1 -Dsolr.directoryFactory=org.apache.solr.core.MockDirectoryFactory" />
       <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
     </configuration>
     <configuration default="false" name="benchmark module" type="JUnit" factoryName="JUnit">
@@ -19,7 +19,7 @@
       <module name="clustering" />
       <option name="TEST_OBJECT" value="package" />
       <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/solr/build/contrib/clustering" />
-      <option name="VM_PARAMETERS" value="-ea -Dtests.luceneMatchVersion=4.0 -DtempDir=temp" />
+      <option name="VM_PARAMETERS" value="-ea -Dtests.luceneMatchVersion=4.0 -DtempDir=temp -Djetty.testMode=1 -Djetty.insecurerandom=1 -Dsolr.directoryFactory=org.apache.solr.core.MockDirectoryFactory" />
       <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
     </configuration>
     <configuration default="false" name="common analysis module" type="JUnit" factoryName="JUnit">
@@ -33,21 +33,21 @@
       <module name="dataimporthandler" />
       <option name="TEST_OBJECT" value="package" />
       <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/solr/build/contrib/dataimporthandler" />
-      <option name="VM_PARAMETERS" value="-ea -DtempDir=temp" />
+      <option name="VM_PARAMETERS" value="-ea -DtempDir=temp -Djetty.testMode=1 -Djetty.insecurerandom=1 -Dsolr.directoryFactory=org.apache.solr.core.MockDirectoryFactory" />
       <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
     </configuration>
     <configuration default="false" name="dataimporthandler-extras contrib" type="JUnit" factoryName="JUnit">
       <module name="dataimporthandler-extras" />
       <option name="TEST_OBJECT" value="package" />
       <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/solr/build/contrib/dataimporthandler-extras" />
-      <option name="VM_PARAMETERS" value="-ea -DtempDir=temp" />
+      <option name="VM_PARAMETERS" value="-ea -DtempDir=temp -Djetty.testMode=1 -Djetty.insecurerandom=1 -Dsolr.directoryFactory=org.apache.solr.core.MockDirectoryFactory" />
       <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
     </configuration>
     <configuration default="false" name="extraction contrib" type="JUnit" factoryName="JUnit">
       <module name="extraction" />
       <option name="TEST_OBJECT" value="package" />
       <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/solr/build/contrib/extraction" />
-      <option name="VM_PARAMETERS" value="-ea -DtempDir=temp" />
+      <option name="VM_PARAMETERS" value="-ea -DtempDir=temp -Djetty.testMode=1 -Djetty.insecurerandom=1 -Dsolr.directoryFactory=org.apache.solr.core.MockDirectoryFactory" />
       <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
     </configuration>
     <configuration default="false" name="grouping module" type="JUnit" factoryName="JUnit">
@@ -131,7 +131,7 @@
       <module name="solr" />
       <option name="TEST_OBJECT" value="package" />
       <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/solr/build/tests/solr" />
-      <option name="VM_PARAMETERS" value="-ea -Dtests.luceneMatchVersion=4.0 -DtempDir=temp" />
+      <option name="VM_PARAMETERS" value="-ea -Dtests.luceneMatchVersion=4.0 -DtempDir=temp -Djetty.testMode=1 -Djetty.insecurerandom=1 -Dsolr.directoryFactory=org.apache.solr.core.MockDirectoryFactory" />
       <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
     </configuration>
     <configuration default="false" name="spatial contrib" type="JUnit" factoryName="JUnit">
@@ -159,7 +159,7 @@
       <module name="uima" />
       <option name="TEST_OBJECT" value="package" />
       <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/solr/build/contrib/uima" />
-      <option name="VM_PARAMETERS" value="-ea -Dtests.luceneMatchVersion=4.0 -DtempDir=temp" />
+      <option name="VM_PARAMETERS" value="-ea -Dtests.luceneMatchVersion=4.0 -DtempDir=temp -Djetty.testMode=1 -Djetty.insecurerandom=1 -Dsolr.directoryFactory=org.apache.solr.core.MockDirectoryFactory" />
       <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
     </configuration>
     <configuration default="false" name="wordnet contrib" type="JUnit" factoryName="JUnit">

Modified: lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/analysis-extras/analysis-extras.iml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/analysis-extras/analysis-extras.iml?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/analysis-extras/analysis-extras.iml (original)
+++ lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/analysis-extras/analysis-extras.iml Thu Jun  2 21:15:00 2011
@@ -5,8 +5,8 @@
     <output-test url="file://$MODULE_DIR$/../../build/contrib/analysis-extras/test-classes" />
     <exclude-output />
     <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />

Modified: lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/clustering/clustering.iml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/clustering/clustering.iml?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/clustering/clustering.iml (original)
+++ lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/clustering/clustering.iml Thu Jun  2 21:15:00 2011
@@ -5,9 +5,9 @@
     <output-test url="file://$MODULE_DIR$/../../build/contrib/clustering/test-classes" />
     <exclude-output />
     <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test-files" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
@@ -31,7 +31,7 @@
     <orderEntry type="module" module-name="queries" />
     <orderEntry type="module" module-name="solr" />
     <orderEntry type="module" module-name="spatial" />
-    <orderEntry type="module" module-name="spellchecker" />
+    <orderEntry type="module" module-name="suggest" />
     <orderEntry type="module" module-name="lucene" />
     <orderEntry type="module" module-name="common" />
   </component>

Modified: lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/dataimporthandler-extras/dataimporthandler-extras.iml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/dataimporthandler-extras/dataimporthandler-extras.iml?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/dataimporthandler-extras/dataimporthandler-extras.iml (original)
+++ lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/dataimporthandler-extras/dataimporthandler-extras.iml Thu Jun  2 21:15:00 2011
@@ -5,9 +5,9 @@
     <output-test url="file://$MODULE_DIR$/../../build/contrib/dataimporthandler-extras/test-classes" />
     <exclude-output />
     <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test-files" isTestSource="true" />
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />

Modified: lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/dataimporthandler/dataimporthandler.iml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/dataimporthandler/dataimporthandler.iml?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/dataimporthandler/dataimporthandler.iml (original)
+++ lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/dataimporthandler/dataimporthandler.iml Thu Jun  2 21:15:00 2011
@@ -5,10 +5,10 @@
     <output-test url="file://$MODULE_DIR$/../../build/contrib/dataimporthandler/test-classes" />
     <exclude-output />
     <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/webapp" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/webapp" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test-files" isTestSource="true" />
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />

Modified: lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/extraction/extraction.iml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/extraction/extraction.iml?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/extraction/extraction.iml (original)
+++ lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/extraction/extraction.iml Thu Jun  2 21:15:00 2011
@@ -5,9 +5,9 @@
     <output-test url="file://$MODULE_DIR$/../../build/contrib/extraction/test-classes" />
     <exclude-output />
     <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test-files" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />

Modified: lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/uima/uima.iml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/uima/uima.iml?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/uima/uima.iml (original)
+++ lucene/dev/branches/solr2452/dev-tools/idea/solr/contrib/uima/uima.iml Thu Jun  2 21:15:00 2011
@@ -5,10 +5,10 @@
     <output-test url="file://$MODULE_DIR$/../../build/contrib/uima/test-classes" />
     <exclude-output />
     <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test-files" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/resources" isTestSource="false" />
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />

Modified: lucene/dev/branches/solr2452/dev-tools/idea/solr/solr.iml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/idea/solr/solr.iml?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/idea/solr/solr.iml (original)
+++ lucene/dev/branches/solr2452/dev-tools/idea/solr/solr.iml Thu Jun  2 21:15:00 2011
@@ -27,7 +27,7 @@
     <orderEntry type="module" module-name="queries" />
     <orderEntry type="module" module-name="misc" />
     <orderEntry type="module" module-name="phonetic" />
-    <orderEntry type="module" module-name="spellchecker" />
+    <orderEntry type="module" module-name="suggest" />
     <orderEntry type="module" module-name="common" />
     <orderEntry type="module" module-name="lucene" />
   </component>

Modified: lucene/dev/branches/solr2452/dev-tools/maven/modules/analysis/icu/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/maven/modules/analysis/icu/pom.xml.template?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/maven/modules/analysis/icu/pom.xml.template (original)
+++ lucene/dev/branches/solr2452/dev-tools/maven/modules/analysis/icu/pom.xml.template Thu Jun  2 21:15:00 2011
@@ -70,8 +70,8 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-icu4j</artifactId>
+      <groupId>com.ibm.icu</groupId>
+      <artifactId>icu4j</artifactId>
     </dependency>
     <dependency>
       <groupId>junit</groupId>

Modified: lucene/dev/branches/solr2452/dev-tools/maven/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/maven/pom.xml.template?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/maven/pom.xml.template (original)
+++ lucene/dev/branches/solr2452/dev-tools/maven/pom.xml.template Thu Jun  2 21:15:00 2011
@@ -121,9 +121,9 @@
   <dependencyManagement>
     <dependencies>
       <dependency>
-        <groupId>org.apache.lucene</groupId>
-        <artifactId>lucene-icu4j</artifactId>
-        <version>${project.version}</version>
+        <groupId>com.ibm.icu</groupId>
+        <artifactId>icu4j</artifactId>
+        <version>4.8</version>
       </dependency>
       <dependency>
         <groupId>com.google.guava</groupId>
@@ -598,20 +598,6 @@
             <artifactId>maven-install-plugin</artifactId>
             <executions>
               <execution>
-                <id>install-icu4j</id>
-                <phase>install</phase>
-                <goals>
-                  <goal>install-file</goal>
-                </goals>
-                <configuration>
-                  <groupId>org.apache.lucene</groupId>
-                  <artifactId>lucene-icu4j</artifactId>
-                  <version>${project.version}</version>
-                  <packaging>jar</packaging>
-                  <file>modules/analysis/icu/lib/icu4j-4_6.jar</file>
-                </configuration>
-              </execution>
-              <execution>
                 <id>install-xercesImpl</id>
                 <phase>install</phase>
                 <goals>

Modified: lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/analysis-extras/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/analysis-extras/pom.xml.template?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/analysis-extras/pom.xml.template (original)
+++ lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/analysis-extras/pom.xml.template Thu Jun  2 21:15:00 2011
@@ -94,8 +94,8 @@
     <directory>${build-directory}</directory>
     <outputDirectory>${build-directory}/classes</outputDirectory>
     <testOutputDirectory>${build-directory}/test-classes</testOutputDirectory>
-    <sourceDirectory>src/main/java</sourceDirectory>
-    <testSourceDirectory>src/test/java</testSourceDirectory>
+    <sourceDirectory>src/java</sourceDirectory>
+    <testSourceDirectory>src/test</testSourceDirectory>
     <testResources>
       <testResource>
         <directory>src/test-files</directory>

Modified: lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/clustering/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/clustering/pom.xml.template?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/clustering/pom.xml.template (original)
+++ lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/clustering/pom.xml.template Thu Jun  2 21:15:00 2011
@@ -115,9 +115,11 @@
     <directory>${build-directory}</directory>
     <outputDirectory>${build-directory}/classes</outputDirectory>
     <testOutputDirectory>${build-directory}/test-classes</testOutputDirectory>
+    <sourceDirectory>src/java</sourceDirectory>
+    <testSourceDirectory>src/test</testSourceDirectory>
     <testResources>
       <testResource>
-        <directory>src/test/resources</directory>
+        <directory>src/test-files</directory>
       </testResource>
       <testResource>
         <directory>../../src/test-files</directory>

Modified: lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/dataimporthandler-extras/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/dataimporthandler-extras/pom.xml.template?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/dataimporthandler-extras/pom.xml.template (original)
+++ lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/dataimporthandler-extras/pom.xml.template Thu Jun  2 21:15:00 2011
@@ -105,11 +105,11 @@
     <directory>${build-directory}</directory>
     <outputDirectory>${build-directory}/classes</outputDirectory>
     <testOutputDirectory>${build-directory}/test-classes</testOutputDirectory>
-    <sourceDirectory>src/main/java</sourceDirectory>
-    <testSourceDirectory>src/test/java</testSourceDirectory>
+    <sourceDirectory>src/java</sourceDirectory>
+    <testSourceDirectory>src/test</testSourceDirectory>
     <testResources>
       <testResource>
-        <directory>src/test/resources</directory>
+        <directory>src/test-files</directory>
       </testResource>
       <testResource>
         <directory>../../src/test-files</directory>

Modified: lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/dataimporthandler/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/dataimporthandler/pom.xml.template?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/dataimporthandler/pom.xml.template (original)
+++ lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/dataimporthandler/pom.xml.template Thu Jun  2 21:15:00 2011
@@ -102,11 +102,11 @@
     <directory>${build-directory}</directory>
     <outputDirectory>${build-directory}/classes</outputDirectory>
     <testOutputDirectory>${build-directory}/test-classes</testOutputDirectory>
-    <sourceDirectory>src/main/java</sourceDirectory>
-    <testSourceDirectory>src/test/java</testSourceDirectory>
+    <sourceDirectory>src/java</sourceDirectory>
+    <testSourceDirectory>src/test</testSourceDirectory>
     <testResources>
       <testResource>
-        <directory>src/test/resources</directory>
+        <directory>src/test-files</directory>
       </testResource>
       <testResource>
         <directory>../../src/test-files</directory>

Modified: lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/extraction/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/extraction/pom.xml.template?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/extraction/pom.xml.template (original)
+++ lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/extraction/pom.xml.template Thu Jun  2 21:15:00 2011
@@ -68,8 +68,8 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-icu4j</artifactId>
+      <groupId>com.ibm.icu</groupId>
+      <artifactId>icu4j</artifactId>
     </dependency>
     <dependency>
       <groupId>javax.servlet</groupId>
@@ -94,9 +94,11 @@
     <directory>${build-directory}</directory>
     <outputDirectory>${build-directory}/classes</outputDirectory>
     <testOutputDirectory>${build-directory}/test-classes</testOutputDirectory>
+    <sourceDirectory>src/java</sourceDirectory>
+    <testSourceDirectory>src/test</testSourceDirectory>
     <testResources>
       <testResource>
-        <directory>src/test/resources</directory>
+        <directory>src/test-files</directory>
       </testResource>
       <testResource>
         <directory>../../src/test-files</directory>

Modified: lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/uima/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/uima/pom.xml.template?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/uima/pom.xml.template (original)
+++ lucene/dev/branches/solr2452/dev-tools/maven/solr/contrib/uima/pom.xml.template Thu Jun  2 21:15:00 2011
@@ -106,14 +106,16 @@
     <directory>${build-directory}</directory>
     <outputDirectory>${build-directory}/classes</outputDirectory>
     <testOutputDirectory>${build-directory}/test-classes</testOutputDirectory>
+    <sourceDirectory>src/java</sourceDirectory>
+    <testSourceDirectory>src/test</testSourceDirectory>
     <resources>
       <resource>
-        <directory>src/main/resources</directory>
+        <directory>src/resources</directory>
       </resource>
     </resources>
     <testResources>
       <testResource>
-        <directory>src/test/resources</directory>
+        <directory>src/test-files</directory>
       </testResource>
     </testResources>
     <plugins>

Modified: lucene/dev/branches/solr2452/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/lucene/CHANGES.txt?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/solr2452/lucene/CHANGES.txt Thu Jun  2 21:15:00 2011
@@ -433,11 +433,6 @@ Bug fixes
   with more document deletions is requested before a reader with fewer
   deletions, provided they share some segments. (yonik)
 
-* LUCENE-3147,LUCENE-3152: Fixed open file handles leaks in many places in the 
-  code. Now MockDirectoryWrapper (in test-framework) tracks all open files, 
-  including locks, and fails if the test fails to release all of them.
-  (Mike McCandless, Robert Muir, Shai Erera, Simon Willnauer)
-
 ======================= Lucene 3.x (not yet released) ================
 
 Changes in backwards compatibility policy
@@ -452,12 +447,27 @@ Changes in runtime behavior
   lock file is not stored in the index has changed.  This means you
   will see a different lucene-XXX-write.lock in your lock directory.
   (Robert Muir, Uwe Schindler, Mike McCandless)
+  
+* LUCENE-3146: IndexReader.setNorm throws IllegalStateException if the field
+  does not store norms. (Shai Erera, Mike McCandless)
+  
+Bug fixes
+
+* LUCENE-3147,LUCENE-3152: Fixed open file handles leaks in many places in the 
+  code. Now MockDirectoryWrapper (in test-framework) tracks all open files, 
+  including locks, and fails if the test fails to release all of them.
+  (Mike McCandless, Robert Muir, Shai Erera, Simon Willnauer)
 
 New Features
 
 * LUCENE-3140: Added experimental FST implementation to Lucene.
   (Robert Muir, Dawid Weiss, Mike McCandless)
 
+Build
+
+* LUCENE-1344: Create OSGi bundle using dev-tools/maven.
+  (Nicolas Lalevée, Luca Stancapiano via ryan)
+
 ======================= Lucene 3.2.0 =======================
 
 Changes in backwards compatibility policy

Modified: lucene/dev/branches/solr2452/lucene/common-build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/lucene/common-build.xml?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/lucene/common-build.xml (original)
+++ lucene/dev/branches/solr2452/lucene/common-build.xml Thu Jun  2 21:15:00 2011
@@ -540,6 +540,7 @@
               
               <sysproperty key="testmethod" value="${testmethod}"/>
               <sysproperty key="jetty.testMode" value="1"/>
+              <sysproperty key="jetty.insecurerandom" value="1"/>
 
         <sysproperty key="solr.directoryFactory" value="org.apache.solr.core.MockDirectoryFactory"/>
 	    	

Modified: lucene/dev/branches/solr2452/lucene/contrib/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/lucene/contrib/CHANGES.txt?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/lucene/contrib/CHANGES.txt (original)
+++ lucene/dev/branches/solr2452/lucene/contrib/CHANGES.txt Thu Jun  2 21:15:00 2011
@@ -55,11 +55,31 @@ Bug Fixes
 
 ======================= Lucene 3.x (not yet released) ================
 
+New Features
+
+ * LUCENE-152: Add KStem (light stemmer for English).
+   (Yonik Seeley via Robert Muir)
+
+ * LUCENE-3135: Add suggesters (autocomplete) to contrib/spellchecker,
+   with three implementations: Jaspell, Ternary Trie, and Finite State.
+   (Andrzej Bialecki, Dawid Weiss, Mike Mccandless, Robert Muir)
+ 
+ * LUCENE-3129: Added BlockGroupingCollector, a single pass
+   grouping collector which is faster than the two-pass approach, and
+   also computes the total group count, but requires that every
+   document sharing the same group was indexed as a doc block
+   (IndexWriter.add/updateDocuments).  (Mike McCandless)
+
 API Changes
 
  * LUCENE-3141: add getter method to access fragInfos in FieldFragList.
    (Sujit Pal via Koji Sekiguchi)
 
+Build
+
+ * LUCENE-3149: Upgrade contrib/icu's ICU jar file to ICU 4.8. 
+   (Robert Muir)
+
 ======================= Lucene 3.2.0 =======================
 
 Changes in backwards compatibility policy

Modified: lucene/dev/branches/solr2452/modules/analysis/LICENSE.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/modules/analysis/LICENSE.txt?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/modules/analysis/LICENSE.txt (original)
+++ lucene/dev/branches/solr2452/modules/analysis/LICENSE.txt Thu Jun  2 21:15:00 2011
@@ -229,3 +229,37 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS;
 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 KStemmer:
+
+Copyright © 2003,
+Center for Intelligent Information Retrieval,
+University of Massachusetts, Amherst.
+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.
+
+3. The names "Center for Intelligent Information Retrieval" and
+"University of Massachusetts" must not be used to endorse or promote products
+derived from this software without prior written permission. To obtain
+permission, contact info@ciir.cs.umass.edu.
+
+THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER 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 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.

Modified: lucene/dev/branches/solr2452/modules/analysis/NOTICE.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/modules/analysis/NOTICE.txt?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/modules/analysis/NOTICE.txt (original)
+++ lucene/dev/branches/solr2452/modules/analysis/NOTICE.txt Thu Jun  2 21:15:00 2011
@@ -17,6 +17,11 @@ were developed by Martin Porter and Rich
 The full snowball package is available from
   http://snowball.tartarus.org/
 
+The KStem stemmer in
+  common/src/org/apache/lucene/analysis/en
+was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst)
+under the BSD-license.
+
 The Arabic,Persian,Romanian,Bulgarian, and Hindi analyzers (common) come with a default
 stopword list that is BSD-licensed created by Jacques Savoy.  These files reside in:
 common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt,

Modified: lucene/dev/branches/solr2452/modules/analysis/icu/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/modules/analysis/icu/build.xml?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/modules/analysis/icu/build.xml (original)
+++ lucene/dev/branches/solr2452/modules/analysis/icu/build.xml Thu Jun  2 21:15:00 2011
@@ -133,11 +133,6 @@ are part of the ICU4C package. See http:
     </compile>
   </target>
   
-  <target name="dist-maven" depends="contrib-build.dist-maven">
-    <m2-deploy-with-pom-template pom.xml="lib/lucene-icu4j-pom.xml.template"
-                                 jar.file="lib/icu4j-4_6.jar" />
-  </target>
-
   <target name="javadocs" depends="compile-core">
    	<sequential>
        <mkdir dir="${javadoc.dir}/contrib-${name}"/>

Modified: lucene/dev/branches/solr2452/modules/analysis/icu/lib/icu4j-NOTICE.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/modules/analysis/icu/lib/icu4j-NOTICE.txt?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/modules/analysis/icu/lib/icu4j-NOTICE.txt (original)
+++ lucene/dev/branches/solr2452/modules/analysis/icu/lib/icu4j-NOTICE.txt Thu Jun  2 21:15:00 2011
@@ -1,3 +1,3 @@
-ICU4J, (under contrib/icu) is licensed under an MIT styles license
-(contrib/icu/lib/ICU-LICENSE.txt) and Copyright (c) 1995-2008
+ICU4J, (under modules/analysis/icu) is licensed under an MIT style license
+(modules/analysis/icu/lib/icu4j-LICENSE-BSD_LIKE.txt) and Copyright (c) 1995-2011
 International Business Machines Corporation and others
\ No newline at end of file

Modified: lucene/dev/branches/solr2452/modules/analysis/icu/src/tools/java/org/apache/lucene/analysis/icu/RBBIRuleCompiler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/modules/analysis/icu/src/tools/java/org/apache/lucene/analysis/icu/RBBIRuleCompiler.java?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/modules/analysis/icu/src/tools/java/org/apache/lucene/analysis/icu/RBBIRuleCompiler.java (original)
+++ lucene/dev/branches/solr2452/modules/analysis/icu/src/tools/java/org/apache/lucene/analysis/icu/RBBIRuleCompiler.java Thu Jun  2 21:15:00 2011
@@ -25,8 +25,6 @@ import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.lang.reflect.Method;
 
 import com.ibm.icu.text.RuleBasedBreakIterator;
 
@@ -80,11 +78,7 @@ public class RBBIRuleCompiler {
         System.exit(1);
       }
       FileOutputStream os = new FileOutputStream(outputFile);
-      // RBBIRuleBuilder.compileRules(rules, os);
-      Class<?> builderClass = Class.forName("com.ibm.icu.text.RBBIRuleBuilder");
-      Method method = builderClass.getDeclaredMethod("compileRules", String.class, OutputStream.class);
-      method.setAccessible(true);
-      method.invoke(null, rules, os);
+      RuleBasedBreakIterator.compileRules(rules, os);
       os.close();
       System.err.println(outputFile.length() + " bytes.");
     }

Modified: lucene/dev/branches/solr2452/modules/grouping/src/java/org/apache/lucene/search/grouping/package.html
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/modules/grouping/src/java/org/apache/lucene/search/grouping/package.html?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/modules/grouping/src/java/org/apache/lucene/search/grouping/package.html (original)
+++ lucene/dev/branches/solr2452/modules/grouping/src/java/org/apache/lucene/search/grouping/package.html Thu Jun  2 21:15:00 2011
@@ -3,61 +3,92 @@
 
 <p>This module enables search result grouping with Lucene, where hits
 with the same value in the specified single-valued group field are
-grouped together.  For example, if you group by the <tt>author</tt>
-field, then all documents with the same value in the <tt>author</tt>
+grouped together.  For example, if you group by the <code>author</code>
+field, then all documents with the same value in the <code>author</code>
 field fall into a single group.</p>
 
 <p>Grouping requires a number of inputs:</p>
 
   <ul>
-    <li> <tt>groupField</tt>: this is the field used for grouping.
-      For example, if you use the <tt>author</tt> field then each
+    <li> <code>groupField</code>: this is the field used for grouping.
+      For example, if you use the <code>author</code> field then each
       group has all books by the same author.  Documents that don't
       have this field are grouped under a single group with
-      a <tt>null</tt> group value.
+      a <code>null</code> group value.
 
-    <li> <tt>groupSort</tt>: how the groups are sorted.  For sorting
+    <li> <code>groupSort</code>: how the groups are sorted.  For sorting
       purposes, each group is "represented" by the highest-sorted
-      document according to the <tt>groupSort</tt> within it.  For
+      document according to the <code>groupSort</code> within it.  For
       example, if you specify "price" (ascending) then the first group
       is the one with the lowest price book within it.  Or if you
       specify relevance group sort, then the first group is the one
       containing the highest scoring book.
 
-    <li> <tt>topNGroups</tt>: how many top groups to keep.  For
+    <li> <code>topNGroups</code>: how many top groups to keep.  For
       example, 10 means the top 10 groups are computed.
 
-    <li> <tt>groupOffset</tt>: which "slice" of top groups you want to
+    <li> <code>groupOffset</code>: which "slice" of top groups you want to
       retrieve.  For example, 3 means you'll get 7 groups back
-      (assuming <tt>topNGroups</tt> is 10).  This is useful for
+      (assuming <code>topNGroups</code> is 10).  This is useful for
       paging, where you might show 5 groups per page.
 
-    <li> <tt>withinGroupSort</tt>: how the documents within each group
+    <li> <code>withinGroupSort</code>: how the documents within each group
       are sorted.  This can be different from the group sort.
 
-    <li> <tt>maxDocsPerGroup</tt>: how many top documents within each
+    <li> <code>maxDocsPerGroup</code>: how many top documents within each
       group to keep.
 
-    <li> <tt>withinGroupOffset</tt>: which "slice" of top
+    <li> <code>withinGroupOffset</code>: which "slice" of top
       documents you want to retrieve from each group.
 
   </ul>
 
-<p>The implementation is two-pass: the first pass ({@link
-  org.apache.lucene.search.grouping.FirstPassGroupingCollector})
-  gathers the top groups, and the second pass ({@link
-  org.apache.lucene.search.grouping.SecondPassGroupingCollector})
-  gathers documents within those groups.  If the search is costly to
-  run you may want to use the {@link
-  org.apache.lucene.search.CachingCollector} class, which
-  caches hits and can (quickly) replay them for the second pass.  This
-  way you only run the query once, but you pay a RAM cost to (briefly)
-  hold all hits.  Results are returned as a {@link
-  org.apache.lucene.search.grouping.TopGroups} instance.</p>
+<p>
+There are two grouping implementations here:
+<ul>
+  <li>
+    Arbitrary grouping that can group by any single-valued indexed
+    field, implemented as a two-pass collector: the first pass ({@link
+    org.apache.lucene.search.grouping.FirstPassGroupingCollector})
+    gathers the top groups, and the second pass ({@link
+    org.apache.lucene.search.grouping.SecondPassGroupingCollector})
+    gathers documents within those groups.  If the search is costly to
+    run you may want to use the {@link
+    org.apache.lucene.search.CachingCollector} class, which caches
+    hits and can (quickly) replay them for the second pass.  This way
+    you only run the query once, but you pay a RAM cost to (briefly)
+    hold all hits.  Results are returned as a {@link
+    org.apache.lucene.search.grouping.TopGroups} instance.</p>
+  </li>
+  <li>
+    Indexed groups, using a single pass collector (<code>BlockGroupingCollectorDoc</code>) that
+    is able to group according to the doc blocks created during
+    indexing using <code>IndexWriter</code>'s <code>add/updateDocuments</code> API.
+    This is faster (~25% faster QPS) than the generic two-pass
+    collector, but it only works for doc blocks so you must statically
+    commit (during indexing) to which grouping you'll need at search
+    time.
+
+    <p>This implementation does not rely on a single valued grouping
+    field; rather, the blocks in the index define the groups, so your
+    application is free to determine what the grouping criteria is.
+    At search time, you must provide a <code>Filter</code> that marks
+    the last document in each group.  This is a substantial memory
+    savings because this collector does not load
+    a <code>DocTermsIndex</code> from the
+    <code>FieldCache</code>.
+  </li>
+</ul>
+
+<p>The benefit of the arbitrary grouping implementation is you don't have
+to commit at indexing time to a static grouping of your documents.
+But the downside is it's somewhat slower to run, and requires more RAM
+(a <code>FieldCache.DocTermsIndex</code> entry is created).
 
 <p>Known limitations:</p>
 <ul>
-  <li> The group field must be a single-valued indexed field.
+  <li> For the two-pass grouping collector, the group field must be a
+    single-valued indexed field.
     {@link org.apache.lucene.search.FieldCache} is used to load the {@link org.apache.lucene.search.FieldCache.DocTermsIndex} for this field.
   <li> Unlike Solr's implementation, this module cannot group by
     function query values nor by arbitrary queries.
@@ -66,7 +97,8 @@ field fall into a single group.</p>
     group yourself.
 </ul>
 
-<p>Typical usage looks like this (using the {@link org.apache.lucene.search.CachingCollector}):</p>
+<p>Typical usage for the generic two-pass collector looks like this
+  (using the {@link org.apache.lucene.search.CachingCollector}):</p>
 
 <pre class="prettyprint">
   FirstPassGroupingCollector c1 = new FirstPassGroupingCollector("author", groupSort, groupOffset+topNGroups);
@@ -111,5 +143,50 @@ field fall into a single group.</p>
   // Render groupsResult...
 </pre>
 
+<p>To use the single-pass <code>BlockGroupingCollector</code>,
+   first, at indexing time, you must ensure all docs in each group
+   are added as a block, and you have some way to find the last
+   document of each group.  One simple way to do this is to add a
+   marker binary field:</p>
+
+<pre class="prettyprint">
+  // Create Documents from your source:
+  List&lt;Document&gt; oneGroup = ...;
+  
+  Field groupEndField = new Field("groupEnd", "x", Field.Store.NO, Field.Index.NOT_ANALYZED);
+  groupEndField.setOmitTermFreqAndPositions(true);
+  groupEndField.setOmitNorms(true);
+  oneGroup.get(oneGroup.size()-1).add(groupEndField);
+
+  // You can also use writer.updateDocuments(); just be sure you
+  // replace an entire previous doc block with this new one.  For
+  // example, each group could have a "groupID" field, with the same
+  // value for all docs in this group:
+  writer.addDocuments(oneGroup);
+</pre>
+
+Then, at search time, do this up front:
+
+<pre class="prettyprint">
+  // Set this once in your app & save away for reusing across all queries:
+  Filter groupEndDocs = new CachingWrapperFilter(new QueryWrapperFilter(new TermQuery(new Term("end", "x"))));
+</pre>
+
+Finally, do this per search:
+
+<pre class="prettyprint">
+  // Per search:
+  BlockGroupingCollector c = new BlockGroupingCollector(groupSort, groupOffset+topNGroups, needsScores, groupEndDocs);
+  s.search(new TermQuery(new Term("content", searchTerm)), c);
+  TopGroups groupsResult = c.getTopGroups(withinGroupSort, groupOffset, docOffset, docOffset+docsPerGroup, fillFields);
+
+  // Render groupsResult...
+</pre>
+
+Note that the <code>groupValue</code> of each <code>GroupDocs</code>
+will be <code>null</code>, so if you need to present this value you'll
+have to separately retrieve it (for example using stored
+fields, <code>FieldCache</code>, etc.).
+
 </body>
 </html>

Modified: lucene/dev/branches/solr2452/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java (original)
+++ lucene/dev/branches/solr2452/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java Thu Jun  2 21:15:00 2011
@@ -18,6 +18,7 @@
 package org.apache.lucene.search.grouping;
 
 import java.util.*;
+import java.io.IOException;
 
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
@@ -183,6 +184,7 @@ public class TestGrouping extends Lucene
   private Comparator<GroupDoc> getComparator(Sort sort) {
     final SortField[] sortFields = sort.getSort();
     return new Comparator<GroupDoc>() {
+      // @Override -- Not until Java 1.6
       public int compare(GroupDoc d1, GroupDoc d2) {
         for(SortField sf : sortFields) {
           final int cmp;
@@ -224,6 +226,16 @@ public class TestGrouping extends Lucene
     return fields;
   }
 
+  /*
+  private String groupToString(BytesRef b) {
+    if (b == null) {
+      return "null";
+    } else {
+      return b.utf8ToString();
+    }
+  }
+  */
+
   private TopGroups slowGrouping(GroupDoc[] groupDocs,
                                  String searchTerm,
                                  boolean fillFields,
@@ -247,21 +259,25 @@ public class TestGrouping extends Lucene
     int totalHitCount = 0;
     Set<BytesRef> knownGroups = new HashSet<BytesRef>();
 
+    //System.out.println("TEST: slowGrouping");
     for(GroupDoc d : groupDocs) {
       // TODO: would be better to filter by searchTerm before sorting!
       if (!d.content.equals(searchTerm)) {
         continue;
       }
       totalHitCount++;
+      //System.out.println("  match id=" + d.id);
 
       if (doAllGroups) {
         if (!knownGroups.contains(d.group)) {
           knownGroups.add(d.group);
+          //System.out.println("    add group=" + groupToString(d.group));
         }
       }
 
       List<GroupDoc> l = groups.get(d.group);
       if (l == null) {
+        //System.out.println("    add sortedGroup=" + groupToString(d.group));
         sortedGroups.add(d.group);
         if (fillFields) {
           sortedGroupFields.add(fillFields(d, groupSort));
@@ -322,6 +338,67 @@ public class TestGrouping extends Lucene
     }
   }
 
+  private IndexReader getDocBlockReader(Directory dir, GroupDoc[] groupDocs) throws IOException {
+    // Coalesce by group, but in random order:
+    Collections.shuffle(Arrays.asList(groupDocs), random);
+    final Map<BytesRef,List<GroupDoc>> groupMap = new HashMap<BytesRef,List<GroupDoc>>();
+    final List<BytesRef> groupValues = new ArrayList<BytesRef>();
+    
+    for(GroupDoc groupDoc : groupDocs) {
+      if (!groupMap.containsKey(groupDoc.group)) {
+        groupValues.add(groupDoc.group);
+        groupMap.put(groupDoc.group, new ArrayList<GroupDoc>());
+      }
+      groupMap.get(groupDoc.group).add(groupDoc);
+    }
+
+    RandomIndexWriter w = new RandomIndexWriter(
+                                                random,
+                                                dir,
+                                                newIndexWriterConfig(TEST_VERSION_CURRENT,
+                                                                     new MockAnalyzer(random)));
+
+    final List<List<Document>> updateDocs = new ArrayList<List<Document>>();
+    //System.out.println("TEST: index groups");
+    for(BytesRef group : groupValues) {
+      final List<Document> docs = new ArrayList<Document>();
+      //System.out.println("TEST:   group=" + (group == null ? "null" : group.utf8ToString()));
+      for(GroupDoc groupValue : groupMap.get(group)) {
+        Document doc = new Document();
+        docs.add(doc);
+        if (groupValue.group != null) {
+          doc.add(newField("group", groupValue.group.utf8ToString(), Field.Index.NOT_ANALYZED));
+        }
+        doc.add(newField("sort1", groupValue.sort1.utf8ToString(), Field.Index.NOT_ANALYZED));
+        doc.add(newField("sort2", groupValue.sort2.utf8ToString(), Field.Index.NOT_ANALYZED));
+        doc.add(new NumericField("id").setIntValue(groupValue.id));
+        doc.add(newField("content", groupValue.content, Field.Index.NOT_ANALYZED));
+        //System.out.println("TEST:     doc content=" + groupValue.content + " group=" + (groupValue.group == null ? "null" : groupValue.group.utf8ToString()) + " sort1=" + groupValue.sort1.utf8ToString() + " id=" + groupValue.id);
+      }
+      // So we can pull filter marking last doc in block:
+      final Field groupEnd = newField("groupend", "x", Field.Index.NOT_ANALYZED);
+      groupEnd.setOmitTermFreqAndPositions(true);
+      groupEnd.setOmitNorms(true);
+      docs.get(docs.size()-1).add(groupEnd);
+      // Add as a doc block:
+      w.addDocuments(docs);
+      if (group != null && random.nextInt(7) == 4) {
+        updateDocs.add(docs);
+      }
+    }
+
+    for(List<Document> docs : updateDocs) {
+      // Just replaces docs w/ same docs:
+      w.updateDocuments(new Term("group", docs.get(0).get("group")),
+                        docs);
+    }
+
+    final IndexReader r = w.getReader();
+    w.close();
+
+    return r;
+  }
+
   public void testRandom() throws Exception {
     for(int iter=0;iter<3;iter++) {
 
@@ -350,7 +427,7 @@ public class TestGrouping extends Lucene
                                                   random,
                                                   dir,
                                                   newIndexWriterConfig(TEST_VERSION_CURRENT,
-                                                                       new MockAnalyzer(random)).setMergePolicy(newLogMergePolicy()));
+                                                                       new MockAnalyzer(random)));
 
       Document doc = new Document();
       Document docNoGroup = new Document();
@@ -405,152 +482,203 @@ public class TestGrouping extends Lucene
       final IndexReader r = w.getReader();
       w.close();
 
-      final IndexSearcher s = new IndexSearcher(r);
+      // Build 2nd index, where docs are added in blocks by
+      // group, so we can use single pass collector
+      final Directory dir2 = newDirectory();
+      final IndexReader r2 = getDocBlockReader(dir2, groupDocs);
+      final Filter lastDocInBlock = new CachingWrapperFilter(new QueryWrapperFilter(new TermQuery(new Term("groupend", "x"))));
 
-      for(int searchIter=0;searchIter<100;searchIter++) {
+      final IndexSearcher s = new IndexSearcher(r);
+      final IndexSearcher s2 = new IndexSearcher(r2);
 
-        if (VERBOSE) {
-          System.out.println("TEST: searchIter=" + searchIter);
-        }
+      final int[] docIDToID = FieldCache.DEFAULT.getInts(r, "id");
+      final int[] docIDToID2 = FieldCache.DEFAULT.getInts(r2, "id");
 
-        final String searchTerm = contentStrings[random.nextInt(contentStrings.length)];
-        final boolean fillFields = random.nextBoolean();
-        final boolean getScores = random.nextBoolean();
-        final boolean getMaxScores = random.nextBoolean();
-        final Sort groupSort = getRandomSort();
-        // TODO: also test null (= sort by relevance)
-        final Sort docSort = getRandomSort();
-
-        final int topNGroups = _TestUtil.nextInt(random, 1, 30);
-        final int docsPerGroup = _TestUtil.nextInt(random, 1, 50);
-        final int groupOffset = _TestUtil.nextInt(random, 0, (topNGroups-1)/2);
-        //final int groupOffset = 0;
+      try {
+        for(int searchIter=0;searchIter<100;searchIter++) {
 
-        final int docOffset = _TestUtil.nextInt(random, 0, docsPerGroup-1);
-        //final int docOffset = 0;
+          if (VERBOSE) {
+            System.out.println("TEST: searchIter=" + searchIter);
+          }
 
-        final boolean doCache = random.nextBoolean();
-        final boolean doAllGroups = random.nextBoolean();
-        if (VERBOSE) {
-          System.out.println("TEST: groupSort=" + groupSort + " docSort=" + docSort + " searchTerm=" + searchTerm + " topNGroups=" + topNGroups + " groupOffset=" + groupOffset + " docOffset=" + docOffset + " doCache=" + doCache + " docsPerGroup=" + docsPerGroup + " doAllGroups=" + doAllGroups);
-        }
+          final String searchTerm = contentStrings[random.nextInt(contentStrings.length)];
+          final boolean fillFields = random.nextBoolean();
+          final boolean getScores = random.nextBoolean();
+          final boolean getMaxScores = random.nextBoolean();
+          final Sort groupSort = getRandomSort();
+          //final Sort groupSort = new Sort(new SortField[] {new SortField("sort1", SortField.STRING), new SortField("id", SortField.INT)});
+          // TODO: also test null (= sort by relevance)
+          final Sort docSort = getRandomSort();
+
+          final int topNGroups = _TestUtil.nextInt(random, 1, 30);
+          //final int topNGroups = 4;
+          final int docsPerGroup = _TestUtil.nextInt(random, 1, 50);
+          final int groupOffset = _TestUtil.nextInt(random, 0, (topNGroups-1)/2);
+          //final int groupOffset = 0;
 
-        final AllGroupsCollector allGroupsCollector;
-        if (doAllGroups) {
-          allGroupsCollector = new AllGroupsCollector("group");
-        } else {
-          allGroupsCollector = null;
-        }
+          final int docOffset = _TestUtil.nextInt(random, 0, docsPerGroup-1);
+          //final int docOffset = 0;
 
-        final FirstPassGroupingCollector c1 = new FirstPassGroupingCollector("group", groupSort, groupOffset+topNGroups);
-        final CachingCollector cCache;
-        final Collector c;
-        
-        final boolean useWrappingCollector = random.nextBoolean();
-        
-        if (doCache) {
-          final double maxCacheMB = random.nextDouble();
+          final boolean doCache = random.nextBoolean();
+          final boolean doAllGroups = random.nextBoolean();
           if (VERBOSE) {
-            System.out.println("TEST: maxCacheMB=" + maxCacheMB);
+            System.out.println("TEST: groupSort=" + groupSort + " docSort=" + docSort + " searchTerm=" + searchTerm + " topNGroups=" + topNGroups + " groupOffset=" + groupOffset + " docOffset=" + docOffset + " doCache=" + doCache + " docsPerGroup=" + docsPerGroup + " doAllGroups=" + doAllGroups);
           }
 
-          if (useWrappingCollector) {
-            if (doAllGroups) {
-              cCache = CachingCollector.create(c1, true, maxCacheMB);              
-              c = MultiCollector.wrap(cCache, allGroupsCollector);
-            } else {
-              c = cCache = CachingCollector.create(c1, true, maxCacheMB);              
-            }
-          } else {
-            // Collect only into cache, then replay multiple times:
-            c = cCache = CachingCollector.create(false, true, maxCacheMB);
-          }
-        } else {
-          cCache = null;
+          final AllGroupsCollector allGroupsCollector;
           if (doAllGroups) {
-            c = MultiCollector.wrap(c1, allGroupsCollector);
+            allGroupsCollector = new AllGroupsCollector("group");
           } else {
-            c = c1;
+            allGroupsCollector = null;
           }
-        }
+
+          final FirstPassGroupingCollector c1 = new FirstPassGroupingCollector("group", groupSort, groupOffset+topNGroups);
+          final CachingCollector cCache;
+          final Collector c;
+        
+          final boolean useWrappingCollector = random.nextBoolean();
         
-        s.search(new TermQuery(new Term("content", searchTerm)), c);
+          if (doCache) {
+            final double maxCacheMB = random.nextDouble();
+            if (VERBOSE) {
+              System.out.println("TEST: maxCacheMB=" + maxCacheMB);
+            }
 
-        if (doCache && !useWrappingCollector) {
-          if (cCache.isCached()) {
-            // Replay for first-pass grouping
-            cCache.replay(c1);
-            if (doAllGroups) {
-              // Replay for all groups:
-              cCache.replay(allGroupsCollector);
+            if (useWrappingCollector) {
+              if (doAllGroups) {
+                cCache = CachingCollector.create(c1, true, maxCacheMB);              
+                c = MultiCollector.wrap(cCache, allGroupsCollector);
+              } else {
+                c = cCache = CachingCollector.create(c1, true, maxCacheMB);              
+              }
+            } else {
+              // Collect only into cache, then replay multiple times:
+              c = cCache = CachingCollector.create(false, true, maxCacheMB);
             }
           } else {
-            // Replay by re-running search:
-            s.search(new TermQuery(new Term("content", searchTerm)), c1);
+            cCache = null;
             if (doAllGroups) {
-              s.search(new TermQuery(new Term("content", searchTerm)), allGroupsCollector);
+              c = MultiCollector.wrap(c1, allGroupsCollector);
+            } else {
+              c = c1;
+            }
+          }
+        
+          s.search(new TermQuery(new Term("content", searchTerm)), c);
+
+          if (doCache && !useWrappingCollector) {
+            if (cCache.isCached()) {
+              // Replay for first-pass grouping
+              cCache.replay(c1);
+              if (doAllGroups) {
+                // Replay for all groups:
+                cCache.replay(allGroupsCollector);
+              }
+            } else {
+              // Replay by re-running search:
+              s.search(new TermQuery(new Term("content", searchTerm)), c1);
+              if (doAllGroups) {
+                s.search(new TermQuery(new Term("content", searchTerm)), allGroupsCollector);
+              }
             }
           }
-        }
 
-        final Collection<SearchGroup> topGroups = c1.getTopGroups(groupOffset, fillFields);
-        final TopGroups groupsResult;
+          final Collection<SearchGroup> topGroups = c1.getTopGroups(groupOffset, fillFields);
+          final TopGroups groupsResult;
 
-        if (topGroups != null) {
+          if (topGroups != null) {
 
-          if (VERBOSE) {
-            System.out.println("TEST: topGroups");
-            for (SearchGroup searchGroup : topGroups) {
-              System.out.println("  " + (searchGroup.groupValue == null ? "null" : searchGroup.groupValue.utf8ToString()) + ": " + Arrays.deepToString(searchGroup.sortValues));
+            if (VERBOSE) {
+              System.out.println("TEST: topGroups");
+              for (SearchGroup searchGroup : topGroups) {
+                System.out.println("  " + (searchGroup.groupValue == null ? "null" : searchGroup.groupValue.utf8ToString()) + ": " + Arrays.deepToString(searchGroup.sortValues));
+              }
             }
-          }
 
-          final SecondPassGroupingCollector c2 = new SecondPassGroupingCollector("group", topGroups, groupSort, docSort, docOffset+docsPerGroup, getScores, getMaxScores, fillFields);
-          if (doCache) {
-            if (cCache.isCached()) {
-              if (VERBOSE) {
-                System.out.println("TEST: cache is intact");
+            final SecondPassGroupingCollector c2 = new SecondPassGroupingCollector("group", topGroups, groupSort, docSort, docOffset+docsPerGroup, getScores, getMaxScores, fillFields);
+            if (doCache) {
+              if (cCache.isCached()) {
+                if (VERBOSE) {
+                  System.out.println("TEST: cache is intact");
+                }
+                cCache.replay(c2);
+              } else {
+                if (VERBOSE) {
+                  System.out.println("TEST: cache was too large");
+                }
+                s.search(new TermQuery(new Term("content", searchTerm)), c2);
               }
-              cCache.replay(c2);
             } else {
-              if (VERBOSE) {
-                System.out.println("TEST: cache was too large");
-              }
               s.search(new TermQuery(new Term("content", searchTerm)), c2);
             }
+
+            if (doAllGroups) {
+              TopGroups tempTopGroups = c2.getTopGroups(docOffset);
+              groupsResult = new TopGroups(tempTopGroups, allGroupsCollector.getGroupCount());
+            } else {
+              groupsResult = c2.getTopGroups(docOffset);
+            }
           } else {
-            s.search(new TermQuery(new Term("content", searchTerm)), c2);
+            groupsResult = null;
+            if (VERBOSE) {
+              System.out.println("TEST:   no results");
+            }
+          }
+
+          final TopGroups expectedGroups = slowGrouping(groupDocs, searchTerm, fillFields, getScores, getMaxScores, doAllGroups, groupSort, docSort, topNGroups, docsPerGroup, groupOffset, docOffset);
+
+          if (VERBOSE) {
+            if (expectedGroups == null) {
+              System.out.println("TEST: no expected groups");
+            } else {
+              System.out.println("TEST: expected groups");
+              for(GroupDocs gd : expectedGroups.groups) {
+                System.out.println("  group=" + (gd.groupValue == null ? "null" : gd.groupValue.utf8ToString()));
+                for(ScoreDoc sd : gd.scoreDocs) {
+                  System.out.println("    id=" + sd.doc);
+                }
+              }
+            }
           }
+          // NOTE: intentional but temporary field cache insanity!
+          assertEquals(docIDToID, expectedGroups, groupsResult, true);
 
+          final boolean needsScores = getScores || getMaxScores || docSort == null;
+          final BlockGroupingCollector c3 = new BlockGroupingCollector(groupSort, groupOffset+topNGroups, needsScores, lastDocInBlock);
+          final AllGroupsCollector allGroupsCollector2;
+          final Collector c4;
           if (doAllGroups) {
-            TopGroups tempTopGroups = c2.getTopGroups(docOffset);
-            groupsResult = new TopGroups(tempTopGroups, allGroupsCollector.getGroupCount());
+            allGroupsCollector2 = new AllGroupsCollector("group");
+            c4 = MultiCollector.wrap(c3, allGroupsCollector2);
           } else {
-            groupsResult = c2.getTopGroups(docOffset);
+            allGroupsCollector2 = null;
+            c4 = c3;
           }
-        } else {
-          groupsResult = null;
-          if (VERBOSE) {
-            System.out.println("TEST:   no results");
+          s2.search(new TermQuery(new Term("content", searchTerm)), c4);
+          final TopGroups tempTopGroups2 = c3.getTopGroups(docSort, groupOffset, docOffset, docOffset+docsPerGroup, fillFields);
+          final TopGroups groupsResult2;
+          if (doAllGroups && tempTopGroups2 != null) {
+            assertEquals((int) tempTopGroups2.totalGroupCount, allGroupsCollector2.getGroupCount());
+            groupsResult2 = new TopGroups(tempTopGroups2, allGroupsCollector2.getGroupCount());
+          } else {
+            groupsResult2 = tempTopGroups2;
           }
+          assertEquals(docIDToID2, expectedGroups, groupsResult2, false);
         }
-
-        final TopGroups expectedGroups = slowGrouping(groupDocs, searchTerm, fillFields, getScores, getMaxScores, doAllGroups, groupSort, docSort, topNGroups, docsPerGroup, groupOffset, docOffset);
-
-        try {
-          // NOTE: intentional but temporary field cache insanity!
-          assertEquals(FieldCache.DEFAULT.getInts(r, "id"), expectedGroups, groupsResult);
-        } finally {
-          FieldCache.DEFAULT.purge(r);
-        }
+      } finally {
+        FieldCache.DEFAULT.purge(r);
+        FieldCache.DEFAULT.purge(r2);
       }
 
       r.close();
       dir.close();
+
+      r2.close();
+      dir2.close();
     }
   }
 
-  private void assertEquals(int[] docIDtoID, TopGroups expected, TopGroups actual) {
+  private void assertEquals(int[] docIDtoID, TopGroups expected, TopGroups actual, boolean verifyGroupValues) {
     if (expected == null) {
       assertNull(actual);
       return;
@@ -570,7 +698,9 @@ public class TestGrouping extends Lucene
       }
       final GroupDocs expectedGroup = expected.groups[groupIDX];
       final GroupDocs actualGroup = actual.groups[groupIDX];
-      assertEquals(expectedGroup.groupValue, actualGroup.groupValue);
+      if (verifyGroupValues) {
+        assertEquals(expectedGroup.groupValue, actualGroup.groupValue);
+      }
       assertArrayEquals(expectedGroup.groupSortValues, actualGroup.groupSortValues);
 
       // TODO

Modified: lucene/dev/branches/solr2452/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/CHANGES.txt?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/solr/CHANGES.txt (original)
+++ lucene/dev/branches/solr2452/solr/CHANGES.txt Thu Jun  2 21:15:00 2011
@@ -59,11 +59,6 @@ Detailed Change List
 
 New Features
 ----------------------
-
-* SOLR-2378: A new, automaton-based, implementation of suggest (autocomplete) 
-  component, offering an order of magnitude smaller memory consumption
-  compared to ternary trees and jaspell and very fast lookups at runtime.
-  (Dawid Weiss)
   
 * SOLR-571: The autowarmCount for LRUCaches (LRUCache and FastLRUCache) now 
   supports "percentages" which get evaluated  relative the current size of 
@@ -262,6 +257,14 @@ Documentation
 
 ======================= 3.x (not yet released) ================
 
+New Features
+----------------------
+
+* SOLR-2378: A new, automaton-based, implementation of suggest (autocomplete) 
+  component, offering an order of magnitude smaller memory consumption
+  compared to ternary trees and jaspell and very fast lookups at runtime.
+  (Dawid Weiss)
+
 Bug Fixes
 ----------------------
 

Modified: lucene/dev/branches/solr2452/solr/LICENSE.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/LICENSE.txt?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/solr/LICENSE.txt (original)
+++ lucene/dev/branches/solr2452/solr/LICENSE.txt Thu Jun  2 21:15:00 2011
@@ -1096,3 +1096,38 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS;
 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 KStemmer:
+
+Copyright © 2003,
+Center for Intelligent Information Retrieval,
+University of Massachusetts, Amherst.
+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.
+
+3. The names "Center for Intelligent Information Retrieval" and
+"University of Massachusetts" must not be used to endorse or promote products
+derived from this software without prior written permission. To obtain
+permission, contact info@ciir.cs.umass.edu.
+
+THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER 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 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.
+

Modified: lucene/dev/branches/solr2452/solr/NOTICE.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/NOTICE.txt?rev=1130815&r1=1130814&r2=1130815&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/solr/NOTICE.txt (original)
+++ lucene/dev/branches/solr2452/solr/NOTICE.txt Thu Jun  2 21:15:00 2011
@@ -107,6 +107,11 @@ were developed by Martin Porter and Rich
 The full snowball package is available from
   http://snowball.tartarus.org/
 
+The KStem stemmer in
+  common/src/org/apache/lucene/analysis/en
+was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst)
+under the BSD-license.
+
 The Arabic,Persian,Romanian,Bulgarian, and Hindi analyzers (common) come with a default
 stopword list that is BSD-licensed created by Jacques Savoy.  These files reside in:
 common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt,