[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