[hibernate-commits] Hibernate SVN: r15336 - in search/trunk: src/test/org/hibernate/search/test/analyzer/solr and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Mon Oct 13 07:04:49 EDT 2008


Author: hardy.ferentschik
Date: 2008-10-13 07:04:49 -0400 (Mon, 13 Oct 2008)
New Revision: 15336

Modified:
   search/trunk/ivy.xml
   search/trunk/pom.xml
   search/trunk/src/test/org/hibernate/search/test/analyzer/solr/SolrAnalyzerTest.java
   search/trunk/src/test/org/hibernate/search/test/analyzer/solr/Team.java
Log:
HSEARCH-232
* Added testcase for snowball analzyer.

Modified: search/trunk/ivy.xml
===================================================================
--- search/trunk/ivy.xml	2008-10-13 09:51:41 UTC (rev 15335)
+++ search/trunk/ivy.xml	2008-10-13 11:04:49 UTC (rev 15336)
@@ -24,6 +24,7 @@
         <dependency org="javax.annotation" name="jsr250-api" rev="1.0" conf="default->default"/> <!-- optional -->
         <dependency org="org.apache.solr" name="solr-core" rev="1.3.0" conf="default->default"/>
         <dependency org="org.apache.solr" name="solr-common" rev="1.3.0" conf="default->default"/>
+        <dependency org="org.apache.solr" name="solr-lucene-snowball" rev="1.3.0" conf="default->default"/>
         <!--dependency org="org.hibernate.apache.lucene.solr" name="apache-solr-analyzer" rev="1.3.0" conf="default->default"/-->
 
         <!-- transitive dependencies -->

Modified: search/trunk/pom.xml
===================================================================
--- search/trunk/pom.xml	2008-10-13 09:51:41 UTC (rev 15335)
+++ search/trunk/pom.xml	2008-10-13 11:04:49 UTC (rev 15336)
@@ -63,6 +63,12 @@
             <version>1.3.0</version>
             <optional>true</optional>
         </dependency>
+       <dependency>
+            <groupId>org.apache.solr</groupId>
+            <artifactId>solr-lucene-snowball</artifactId>
+            <version>1.3.0</version>
+            <optional>true</optional>
+        </dependency>
 
 
         <dependency>

Modified: search/trunk/src/test/org/hibernate/search/test/analyzer/solr/SolrAnalyzerTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/analyzer/solr/SolrAnalyzerTest.java	2008-10-13 09:51:41 UTC (rev 15335)
+++ search/trunk/src/test/org/hibernate/search/test/analyzer/solr/SolrAnalyzerTest.java	2008-10-13 11:04:49 UTC (rev 15336)
@@ -1,34 +1,62 @@
 // $Id$
 package org.hibernate.search.test.analyzer.solr;
 
-import org.hibernate.search.test.SearchTestCase;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.TermQuery;
+
+import org.hibernate.Transaction;
 import org.hibernate.search.FullTextSession;
 import org.hibernate.search.Search;
-import org.hibernate.Transaction;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.index.Term;
+import org.hibernate.search.test.SearchTestCase;
 
 /**
+ * Tests the Solr analyzer creation framework.
+ *
  * @author Emmanuel Bernard
+ * @author Hardy Ferentschik
  */
 public class SolrAnalyzerTest extends SearchTestCase {
+
+	/**
+	 * Tests that the token filters applied to <code>Team</code> are successfully created and used. Refer to
+	 * <code>Team</code> to see the exat definitions.
+	 *
+	 * @throws Exception in case the test fails
+	 */
 	public void testAnalyzerDef() throws Exception {
+		// create the test instance
 		Team team = new Team();
-		team.setDescription( "This is a D\u00E0scription" );
+		team.setDescription( "This is a D\u00E0scription" );  // \u00E0 == ˆ - ISOLatin1AccentFilterFactory should strip of diacritic 
 		team.setLocation( "Atlanta" );
 		team.setName( "ATL team" );
+
+		// persist and index the test object
 		FullTextSession fts = Search.getFullTextSession( openSession() );
 		Transaction tx = fts.beginTransaction();
 		fts.persist( team );
 		tx.commit();
 		fts.clear();
+
+		// execute several search to show that the right tokenizers were applies
 		tx = fts.beginTransaction();
-		TermQuery query = new TermQuery( new Term("description", "D\u00E0scription") );
-		assertEquals( "iso latin filter should work", 0, fts.createFullTextQuery( query ).list().size() );
-		query = new TermQuery( new Term("description", "is") );
-		assertEquals( "stop word filter should work", 0, fts.createFullTextQuery( query ).list().size() );
-		query = new TermQuery( new Term("description", "dascription") );
-		assertEquals( 1, fts.createFullTextQuery( query ).list().size() );
+		TermQuery query = new TermQuery( new Term( "description", "D\u00E0scription" ) );
+		assertEquals(
+				"iso latin filter should work.  ˆ should be a now", 0, fts.createFullTextQuery( query ).list().size()
+		);
+
+		query = new TermQuery( new Term( "description", "is" ) );
+		assertEquals(
+				"stop word filter should work. is should be removed", 0, fts.createFullTextQuery( query ).list().size()
+		);
+
+		query = new TermQuery( new Term( "description", "dascript" ) );
+		assertEquals(
+				"snowball stemmer should work. 'dascription' should be stemmed to 'dascript'",
+				1,
+				fts.createFullTextQuery( query ).list().size()
+		);
+
+		// cleanup
 		fts.delete( fts.createFullTextQuery( query ).list().get( 0 ) );
 		tx.commit();
 		fts.close();

Modified: search/trunk/src/test/org/hibernate/search/test/analyzer/solr/Team.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/analyzer/solr/Team.java	2008-10-13 09:51:41 UTC (rev 15335)
+++ search/trunk/src/test/org/hibernate/search/test/analyzer/solr/Team.java	2008-10-13 11:04:49 UTC (rev 15336)
@@ -2,37 +2,43 @@
 package org.hibernate.search.test.analyzer.solr;
 
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
-import javax.persistence.GeneratedValue;
 
-import org.hibernate.search.annotations.Indexed;
-import org.hibernate.search.annotations.DocumentId;
-import org.hibernate.search.annotations.Field;
-import org.hibernate.search.annotations.AnalyzerDef;
-import org.hibernate.search.annotations.TokenizerDef;
-import org.hibernate.search.annotations.TokenFilterDef;
-import org.hibernate.search.annotations.Parameter;
-import org.hibernate.search.annotations.Analyzer;
-import org.apache.solr.analysis.StandardTokenizerFactory;
 import org.apache.solr.analysis.ISOLatin1AccentFilterFactory;
 import org.apache.solr.analysis.LowerCaseFilterFactory;
+import org.apache.solr.analysis.SnowballPorterFilterFactory;
+import org.apache.solr.analysis.StandardTokenizerFactory;
 import org.apache.solr.analysis.StopFilterFactory;
 
+import org.hibernate.search.annotations.Analyzer;
+import org.hibernate.search.annotations.AnalyzerDef;
+import org.hibernate.search.annotations.DocumentId;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Indexed;
+import org.hibernate.search.annotations.Parameter;
+import org.hibernate.search.annotations.TokenFilterDef;
+import org.hibernate.search.annotations.TokenizerDef;
+
 /**
  * @author Emmanuel Bernard
  */
 @Entity
 @Indexed
- at AnalyzerDef(name="customanalyzer",
+ at AnalyzerDef(name = "customanalyzer",
 		tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
 		filters = {
 				@TokenFilterDef(factory = ISOLatin1AccentFilterFactory.class),
 				@TokenFilterDef(factory = LowerCaseFilterFactory.class),
 				@TokenFilterDef(factory = StopFilterFactory.class, params = {
-					@Parameter(name="words", value= "org/hibernate/search/test/analyzer/solr/stoplist.properties" ),
-					@Parameter(name="ignoreCase", value="true")
+						@Parameter(name = "words",
+								value = "org/hibernate/search/test/analyzer/solr/stoplist.properties"),
+						@Parameter(name = "ignoreCase", value = "true")
+				}),
+				@TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = {
+						@Parameter(name = "language", value = "English")
 				})
-})
+		})
 public class Team {
 	@Id
 	@DocumentId
@@ -45,7 +51,8 @@
 	@Field
 	private String location;
 
-	@Field @Analyzer(definition = "customanalyzer")
+	@Field
+	@Analyzer(definition = "customanalyzer")
 	private String description;
 
 	public Integer getId() {




More information about the hibernate-commits mailing list