You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2013/04/01 18:30:05 UTC
svn commit: r1463191 [3/8] - in /lucene/dev/trunk: lucene/
lucene/analysis/common/src/java/org/apache/lucene/analysis/ar/
lucene/analysis/common/src/java/org/apache/lucene/analysis/bg/
lucene/analysis/common/src/java/org/apache/lucene/analysis/br/ luce...
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/path/PathHierarchyTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/path/PathHierarchyTokenizerFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/path/PathHierarchyTokenizerFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/path/PathHierarchyTokenizerFactory.java Mon Apr 1 16:30:00 2013
@@ -39,7 +39,7 @@ import org.apache.lucene.util.AttributeS
* <code>Books/Fic</code>...
* </p>
*
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="descendent_path" class="solr.TextField">
* <analyzer type="index">
* <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
@@ -57,7 +57,7 @@ import org.apache.lucene.util.AttributeS
* <code>Books/NonFic/Science/Physics/Theory</code> or
* <code>Books/NonFic/Law</code>.
* </p>
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="descendent_path" class="solr.TextField">
* <analyzer type="index">
* <tokenizer class="solr.KeywordTokenizerFactory" />
@@ -69,59 +69,39 @@ import org.apache.lucene.util.AttributeS
* </pre>
*/
public class PathHierarchyTokenizerFactory extends TokenizerFactory {
+ private final char delimiter;
+ private final char replacement;
+ private final boolean reverse;
+ private final int skip;
- private char delimiter;
- private char replacement;
- private boolean reverse = false;
- private int skip = PathHierarchyTokenizer.DEFAULT_SKIP;
-
- /**
- * Require a configured pattern
- */
- @Override
- public void init(Map<String,String> args){
- super.init( args );
-
- String v = args.get( "delimiter" );
- if( v != null ){
- if( v.length() != 1 ){
- throw new IllegalArgumentException("delimiter should be a char. \"" + v + "\" is invalid");
- }
- else{
- delimiter = v.charAt(0);
- }
- }
- else{
- delimiter = PathHierarchyTokenizer.DEFAULT_DELIMITER;
+ /** Creates a new PathHierarchyTokenizerFactory */
+ public PathHierarchyTokenizerFactory(Map<String,String> args) {
+ super(args);
+ delimiter = getChar(args, "delimiter", PathHierarchyTokenizer.DEFAULT_DELIMITER);
+ replacement = getChar(args, "replace", delimiter);
+ reverse = getBoolean(args, "reverse", false);
+ skip = getInt(args, "skip", PathHierarchyTokenizer.DEFAULT_SKIP);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
}
-
- v = args.get( "replace" );
- if( v != null ){
- if( v.length() != 1 ){
- throw new IllegalArgumentException("replace should be a char. \"" + v + "\" is invalid");
- }
- else{
- replacement = v.charAt(0);
+ }
+
+ private char getChar(Map<String,String> args, String name, char defaultValue) {
+ String v = args.remove(name);
+ if (v != null) {
+ if (v.length() != 1) {
+ throw new IllegalArgumentException(name + " should be a char. \"" + v + "\" is invalid");
+ } else {
+ return v.charAt(0);
}
- }
- else{
- replacement = delimiter;
- }
-
- v = args.get( "reverse" );
- if( v != null ){
- reverse = "true".equals( v );
- }
-
- v = args.get( "skip" );
- if( v != null ){
- skip = Integer.parseInt( v );
+ } else {
+ return defaultValue;
}
}
@Override
public Tokenizer create(AttributeFactory factory, Reader input) {
- if( reverse ) {
+ if (reverse) {
return new ReversePathHierarchyTokenizer(factory, input, delimiter, replacement, skip);
}
return new PathHierarchyTokenizer(factory, input, delimiter, replacement, skip);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternReplaceCharFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternReplaceCharFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternReplaceCharFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternReplaceCharFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -27,7 +27,7 @@ import org.apache.lucene.analysis.util.C
/**
* Factory for {@link PatternReplaceCharFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_ptnreplace" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <charFilter class="solr.PatternReplaceCharFilterFactory"
@@ -36,26 +36,29 @@ import org.apache.lucene.analysis.util.C
* </analyzer>
* </fieldType></pre>
*
- *
* @since Solr 3.1
*/
public class PatternReplaceCharFilterFactory extends CharFilterFactory {
-
- private Pattern p;
- private String replacement;
+ private final Pattern pattern;
+ private final String replacement;
- @Override
- public void init(Map<String, String> args) {
- super.init( args );
- p = getPattern("pattern");
- replacement = args.get( "replacement" );
- if( replacement == null )
+ /** Creates a new PatternReplaceCharFilterFactory */
+ public PatternReplaceCharFilterFactory(Map<String, String> args) {
+ super(args);
+ pattern = getPattern(args, "pattern");
+ String v = args.remove("replacement");
+ if (v == null) {
replacement = "";
- // TODO: throw exception if you set maxBlockChars or blockDelimiters ?
+ } else {
+ replacement = v;
+ }
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
}
@Override
public CharFilter create(Reader input) {
- return new PatternReplaceCharFilter( p, replacement, input );
+ return new PatternReplaceCharFilter(pattern, replacement, input);
}
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternReplaceFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternReplaceFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternReplaceFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternReplaceFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -23,11 +23,10 @@ import org.apache.lucene.analysis.util.T
import java.util.Map;
import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
/**
* Factory for {@link PatternReplaceFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_ptnreplace" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.KeywordTokenizerFactory"/>
@@ -39,34 +38,32 @@ import java.util.regex.PatternSyntaxExce
* @see PatternReplaceFilter
*/
public class PatternReplaceFilterFactory extends TokenFilterFactory {
- Pattern p;
- String replacement;
- boolean all = true;
+ final Pattern pattern;
+ final String replacement;
+ final boolean replaceAll;
- @Override
- public void init(Map<String, String> args) {
- super.init(args);
- p = getPattern("pattern");
- replacement = args.get("replacement");
+ /** Creates a new PatternReplaceFilterFactory */
+ public PatternReplaceFilterFactory(Map<String, String> args) {
+ super(args);
+ pattern = getPattern(args, "pattern");
+ replacement = args.remove("replacement");
- String r = args.get("replace");
- if (null != r) {
- if (r.equals("all")) {
- all = true;
- } else {
- if (r.equals("first")) {
- all = false;
- } else {
- throw new IllegalArgumentException
- ("Configuration Error: 'replace' must be 'first' or 'all' in "
- + this.getClass().getName());
- }
- }
+ String v = args.remove("replace");
+ if (v == null || v.equals("all")) {
+ replaceAll = true;
+ } else if (v.equals("first")) {
+ replaceAll = false;
+ } else {
+ throw new IllegalArgumentException("Configuration Error: " +
+ "'replace' must be 'first' or 'all' in " + getClass().getName());
+ }
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
}
-
}
+
@Override
public PatternReplaceFilter create(TokenStream input) {
- return new PatternReplaceFilter(input, p, replacement, all);
+ return new PatternReplaceFilter(input, pattern, replacement, replaceAll);
}
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternTokenizerFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternTokenizerFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternTokenizerFactory.java Mon Apr 1 16:30:00 2013
@@ -17,7 +17,6 @@ package org.apache.lucene.analysis.patte
* limitations under the License.
*/
-import java.io.IOException;
import java.io.Reader;
import java.util.Map;
import java.util.regex.Pattern;
@@ -45,13 +44,13 @@ import org.apache.lucene.util.AttributeS
* pattern = \'([^\']+)\'
* group = 0
* input = aaa 'bbb' 'ccc'
- *</pre>
+ * </pre>
* the output will be two tokens: 'bbb' and 'ccc' (including the ' marks). With the same input
* but using group=1, the output would be: bbb and ccc (no ' marks)
* </p>
* <p>NOTE: This Tokenizer does not output tokens that are of zero length.</p>
*
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_ptn" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.PatternTokenizerFactory" pattern="\'([^\']+)\'" group="1"/>
@@ -60,29 +59,27 @@ import org.apache.lucene.util.AttributeS
*
* @see PatternTokenizer
* @since solr1.2
- *
*/
-public class PatternTokenizerFactory extends TokenizerFactory
-{
+public class PatternTokenizerFactory extends TokenizerFactory {
public static final String PATTERN = "pattern";
public static final String GROUP = "group";
- protected Pattern pattern;
- protected int group;
+ protected final Pattern pattern;
+ protected final int group;
- /**
- * Require a configured pattern
- */
- @Override
- public void init(Map<String,String> args)
- {
- super.init(args);
- pattern = getPattern( PATTERN );
+ /** Creates a new PatternTokenizerFactory */
+ public PatternTokenizerFactory(Map<String,String> args) {
+ super(args);
+ pattern = getPattern(args, PATTERN);
- group = -1; // use 'split'
- String g = args.get( GROUP );
- if( g != null ) {
- group = Integer.parseInt( g );
+ String v = args.remove(GROUP);
+ if (v == null) {
+ group = -1; // use 'split'
+ } else {
+ group = Integer.parseInt(v);
+ }
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
}
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/DelimitedPayloadTokenFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/DelimitedPayloadTokenFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/DelimitedPayloadTokenFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/DelimitedPayloadTokenFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -30,24 +30,43 @@ import org.apache.lucene.analysis.util.T
import java.util.Map;
/**
- *
* Factory for {@link DelimitedPayloadTokenFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_dlmtd" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.WhitespaceTokenizerFactory"/>
* <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float" delimiter="|"/>
* </analyzer>
* </fieldType></pre>
- *
- *
*/
public class DelimitedPayloadTokenFilterFactory extends TokenFilterFactory implements ResourceLoaderAware {
public static final String ENCODER_ATTR = "encoder";
public static final String DELIMITER_ATTR = "delimiter";
+ private final String encoderClass;
+ private final char delimiter;
+
private PayloadEncoder encoder;
- private char delimiter = '|';
+
+ /** Creates a new DelimitedPayloadTokenFilterFactory */
+ public DelimitedPayloadTokenFilterFactory(Map<String, String> args) {
+ super(args);
+ encoderClass = args.remove(ENCODER_ATTR);
+ if (encoderClass == null) {
+ throw new IllegalArgumentException("Parameter " + ENCODER_ATTR + " is mandatory");
+ }
+ String delim = args.remove(DELIMITER_ATTR);
+ if (delim == null) {
+ delimiter = '|';
+ } else if (delim.length() == 1) {
+ delimiter = delim.charAt(0);
+ } else {
+ throw new IllegalArgumentException("Delimiter must be one character only");
+ }
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
@Override
public DelimitedPayloadTokenFilter create(TokenStream input) {
@@ -55,16 +74,7 @@ public class DelimitedPayloadTokenFilter
}
@Override
- public void init(Map<String, String> args) {
- super.init(args);
- }
-
- @Override
public void inform(ResourceLoader loader) {
- String encoderClass = args.get(ENCODER_ATTR);
- if (encoderClass == null) {
- throw new IllegalArgumentException("Parameter " + ENCODER_ATTR + " is mandatory");
- }
if (encoderClass.equals("float")){
encoder = new FloatEncoder();
} else if (encoderClass.equals("integer")){
@@ -74,14 +84,5 @@ public class DelimitedPayloadTokenFilter
} else {
encoder = loader.newInstance(encoderClass, PayloadEncoder.class);
}
-
- String delim = args.get(DELIMITER_ATTR);
- if (delim != null){
- if (delim.length() == 1) {
- delimiter = delim.charAt(0);
- } else{
- throw new IllegalArgumentException("Delimiter must be one character only");
- }
- }
}
}
\ No newline at end of file
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/NumericPayloadTokenFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/NumericPayloadTokenFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/NumericPayloadTokenFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/NumericPayloadTokenFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -24,28 +24,32 @@ import java.util.Map;
/**
* Factory for {@link NumericPayloadTokenFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_numpayload" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.WhitespaceTokenizerFactory"/>
* <filter class="solr.NumericPayloadTokenFilterFactory" payload="24" typeMatch="word"/>
* </analyzer>
* </fieldType></pre>
- *
*/
public class NumericPayloadTokenFilterFactory extends TokenFilterFactory {
- private float payload;
- private String typeMatch;
- @Override
- public void init(Map<String, String> args) {
- super.init(args);
- String payloadArg = args.get("payload");
- typeMatch = args.get("typeMatch");
+ private final float payload;
+ private final String typeMatch;
+
+ /** Creates a new NumericPayloadTokenFilterFactory */
+ public NumericPayloadTokenFilterFactory(Map<String, String> args) {
+ super(args);
+ String payloadArg = args.remove("payload");
+ typeMatch = args.remove("typeMatch");
if (payloadArg == null || typeMatch == null) {
throw new IllegalArgumentException("Both payload and typeMatch are required");
}
payload = Float.parseFloat(payloadArg);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
}
+
@Override
public NumericPayloadTokenFilter create(TokenStream input) {
return new NumericPayloadTokenFilter(input,payload,typeMatch);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/TokenOffsetPayloadTokenFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/TokenOffsetPayloadTokenFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/TokenOffsetPayloadTokenFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/TokenOffsetPayloadTokenFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -17,22 +17,32 @@ package org.apache.lucene.analysis.paylo
* limitations under the License.
*/
+import java.util.Map;
+
import org.apache.lucene.analysis.payloads.TokenOffsetPayloadTokenFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.util.TokenFilterFactory;
/**
* Factory for {@link TokenOffsetPayloadTokenFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_tokenoffset" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.WhitespaceTokenizerFactory"/>
* <filter class="solr.TokenOffsetPayloadTokenFilterFactory"/>
* </analyzer>
* </fieldType></pre>
- *
*/
public class TokenOffsetPayloadTokenFilterFactory extends TokenFilterFactory {
+
+ /** Creates a new TokenOffsetPayloadTokenFilterFactory */
+ public TokenOffsetPayloadTokenFilterFactory(Map<String,String> args) {
+ super(args);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
+
@Override
public TokenOffsetPayloadTokenFilter create(TokenStream input) {
return new TokenOffsetPayloadTokenFilter(input);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/TypeAsPayloadTokenFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/TypeAsPayloadTokenFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/TypeAsPayloadTokenFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/payloads/TypeAsPayloadTokenFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -17,22 +17,32 @@ package org.apache.lucene.analysis.paylo
* limitations under the License.
*/
+import java.util.Map;
+
import org.apache.lucene.analysis.payloads.TypeAsPayloadTokenFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.util.TokenFilterFactory;
/**
* Factory for {@link TypeAsPayloadTokenFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_typeaspayload" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.WhitespaceTokenizerFactory"/>
* <filter class="solr.TypeAsPayloadTokenFilterFactory"/>
* </analyzer>
- * </fieldType></pre>
- *
+ * </fieldType></pre>
*/
public class TypeAsPayloadTokenFilterFactory extends TokenFilterFactory {
+
+ /** Creates a new TypeAsPayloadTokenFilterFactory */
+ public TypeAsPayloadTokenFilterFactory(Map<String,String> args) {
+ super(args);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
+
@Override
public TypeAsPayloadTokenFilter create(TokenStream input) {
return new TypeAsPayloadTokenFilter(input);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/position/PositionFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/position/PositionFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/position/PositionFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/position/PositionFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -27,7 +27,7 @@ import java.util.Map;
* Factory for {@link PositionFilter}.
* Set the positionIncrement of all tokens to the "positionIncrement", except the first return token which retains its
* original positionIncrement value. The default positionIncrement value is zero.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_position" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -35,17 +35,19 @@ import java.util.Map;
* </analyzer>
* </fieldType></pre>
*
- *
* @see org.apache.lucene.analysis.position.PositionFilter
* @since solr 1.4
*/
public class PositionFilterFactory extends TokenFilterFactory {
- private int positionIncrement;
+ private final int positionIncrement;
- @Override
- public void init(Map<String, String> args) {
- super.init(args);
- positionIncrement = getInt("positionIncrement", 0);
+ /** Creates a new PositionFilterFactory */
+ public PositionFilterFactory(Map<String,String> args) {
+ super(args);
+ positionIncrement = getInt(args, "positionIncrement", 0);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
}
@Override
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -17,13 +17,15 @@ package org.apache.lucene.analysis.pt;
* limitations under the License.
*/
+import java.util.Map;
+
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.pt.PortugueseLightStemFilter;
import org.apache.lucene.analysis.util.TokenFilterFactory;
/**
* Factory for {@link PortugueseLightStemFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_ptlgtstem" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.StandardTokenizerFactory"/>
@@ -31,9 +33,17 @@ import org.apache.lucene.analysis.util.T
* <filter class="solr.PortugueseLightStemFilterFactory"/>
* </analyzer>
* </fieldType></pre>
- *
*/
public class PortugueseLightStemFilterFactory extends TokenFilterFactory {
+
+ /** Creates a new PortugueseLightStemFilterFactory */
+ public PortugueseLightStemFilterFactory(Map<String,String> args) {
+ super(args);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
+
@Override
public TokenStream create(TokenStream input) {
return new PortugueseLightStemFilter(input);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseMinimalStemFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseMinimalStemFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseMinimalStemFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseMinimalStemFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -17,13 +17,15 @@ package org.apache.lucene.analysis.pt;
* limitations under the License.
*/
+import java.util.Map;
+
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.pt.PortugueseMinimalStemFilter;
import org.apache.lucene.analysis.util.TokenFilterFactory;
/**
* Factory for {@link PortugueseMinimalStemFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_ptminstem" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.StandardTokenizerFactory"/>
@@ -31,9 +33,17 @@ import org.apache.lucene.analysis.util.T
* <filter class="solr.PortugueseMinimalStemFilterFactory"/>
* </analyzer>
* </fieldType></pre>
- *
*/
public class PortugueseMinimalStemFilterFactory extends TokenFilterFactory {
+
+ /** Creates a new PortugueseMinimalStemFilterFactory */
+ public PortugueseMinimalStemFilterFactory(Map<String,String> args) {
+ super(args);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
+
@Override
public TokenStream create(TokenStream input) {
return new PortugueseMinimalStemFilter(input);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseStemFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseStemFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseStemFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/pt/PortugueseStemFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -17,13 +17,15 @@ package org.apache.lucene.analysis.pt;
* limitations under the License.
*/
+import java.util.Map;
+
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.pt.PortugueseStemFilter;
import org.apache.lucene.analysis.util.TokenFilterFactory;
/**
* Factory for {@link PortugueseStemFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_ptstem" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.StandardTokenizerFactory"/>
@@ -31,9 +33,17 @@ import org.apache.lucene.analysis.util.T
* <filter class="solr.PortugueseStemFilterFactory"/>
* </analyzer>
* </fieldType></pre>
- *
*/
public class PortugueseStemFilterFactory extends TokenFilterFactory {
+
+ /** Creates a new PortugueseStemFilterFactory */
+ public PortugueseStemFilterFactory(Map<String,String> args) {
+ super(args);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
+
@Override
public TokenStream create(TokenStream input) {
return new PortugueseStemFilter(input);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/reverse/ReverseStringFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/reverse/ReverseStringFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/reverse/ReverseStringFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/reverse/ReverseStringFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -17,13 +17,15 @@ package org.apache.lucene.analysis.rever
* limitations under the License.
*/
+import java.util.Map;
+
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.reverse.ReverseStringFilter;
import org.apache.lucene.analysis.util.TokenFilterFactory;
/**
* Factory for {@link ReverseStringFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_rvsstr" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -31,13 +33,21 @@ import org.apache.lucene.analysis.util.T
* </analyzer>
* </fieldType></pre>
*
- *
* @since solr 1.4
*/
public class ReverseStringFilterFactory extends TokenFilterFactory {
+
+ /** Creates a new ReverseStringFilterFactory */
+ public ReverseStringFilterFactory(Map<String,String> args) {
+ super(args);
+ assureMatchVersion();
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
+
@Override
public ReverseStringFilter create(TokenStream in) {
- assureMatchVersion();
return new ReverseStringFilter(luceneMatchVersion,in);
}
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/ru/RussianLightStemFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -17,13 +17,15 @@ package org.apache.lucene.analysis.ru;
* limitations under the License.
*/
+import java.util.Map;
+
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.ru.RussianLightStemFilter;
import org.apache.lucene.analysis.util.TokenFilterFactory;
/**
* Factory for {@link RussianLightStemFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_rulgtstem" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.StandardTokenizerFactory"/>
@@ -31,9 +33,17 @@ import org.apache.lucene.analysis.util.T
* <filter class="solr.RussianLightStemFilterFactory"/>
* </analyzer>
* </fieldType></pre>
- *
*/
public class RussianLightStemFilterFactory extends TokenFilterFactory {
+
+ /** Creates a new RussianLightStemFilterFactory */
+ public RussianLightStemFilterFactory(Map<String,String> args) {
+ super(args);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
+
@Override
public TokenStream create(TokenStream input) {
return new RussianLightStemFilter(input);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -25,7 +25,7 @@ import java.util.Map;
/**
* Factory for {@link ShingleFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_shingle" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -33,25 +33,24 @@ import java.util.Map;
* outputUnigrams="true" outputUnigramsIfNoShingles="false" tokenSeparator=" "/>
* </analyzer>
* </fieldType></pre>
- *
*/
public class ShingleFilterFactory extends TokenFilterFactory {
- private int minShingleSize;
- private int maxShingleSize;
- private boolean outputUnigrams;
- private boolean outputUnigramsIfNoShingles;
- private String tokenSeparator;
+ private final int minShingleSize;
+ private final int maxShingleSize;
+ private final boolean outputUnigrams;
+ private final boolean outputUnigramsIfNoShingles;
+ private final String tokenSeparator;
- @Override
- public void init(Map<String, String> args) {
- super.init(args);
- maxShingleSize = getInt("maxShingleSize",
+ /** Creates a new ShingleFilterFactory */
+ public ShingleFilterFactory(Map<String, String> args) {
+ super(args);
+ maxShingleSize = getInt(args, "maxShingleSize",
ShingleFilter.DEFAULT_MAX_SHINGLE_SIZE);
if (maxShingleSize < 2) {
throw new IllegalArgumentException("Invalid maxShingleSize (" + maxShingleSize
+ ") - must be at least 2");
}
- minShingleSize = getInt("minShingleSize",
+ minShingleSize = getInt(args, "minShingleSize",
ShingleFilter.DEFAULT_MIN_SHINGLE_SIZE);
if (minShingleSize < 2) {
throw new IllegalArgumentException("Invalid minShingleSize (" + minShingleSize
@@ -62,12 +61,16 @@ public class ShingleFilterFactory extend
+ ") - must be no greater than maxShingleSize ("
+ maxShingleSize + ")");
}
- outputUnigrams = getBoolean("outputUnigrams", true);
- outputUnigramsIfNoShingles = getBoolean("outputUnigramsIfNoShingles", false);
+ outputUnigrams = getBoolean(args, "outputUnigrams", true);
+ outputUnigramsIfNoShingles = getBoolean(args, "outputUnigramsIfNoShingles", false);
tokenSeparator = args.containsKey("tokenSeparator")
- ? args.get("tokenSeparator")
+ ? args.remove("tokenSeparator")
: ShingleFilter.TOKEN_SEPARATOR;
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
}
+
@Override
public ShingleFilter create(TokenStream input) {
ShingleFilter r = new ShingleFilter(input, minShingleSize, maxShingleSize);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballPorterFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballPorterFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballPorterFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballPorterFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -31,7 +31,7 @@ import org.tartarus.snowball.SnowballPro
* Factory for {@link SnowballFilter}, with configurable language
* <p>
* Note: Use of the "Lovins" stemmer is not recommended, as it is implemented with reflection.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_snowballstem" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.StandardTokenizerFactory"/>
@@ -39,26 +39,35 @@ import org.tartarus.snowball.SnowballPro
* <filter class="solr.SnowballPorterFilterFactory" protected="protectedkeyword.txt" language="English"/>
* </analyzer>
* </fieldType></pre>
- *
- *
*/
public class SnowballPorterFilterFactory extends TokenFilterFactory implements ResourceLoaderAware {
public static final String PROTECTED_TOKENS = "protected";
- private String language = "English";
+ private final String language;
+ private final String wordFiles;
private Class<? extends SnowballProgram> stemClass;
private CharArraySet protectedWords = null;
+
+ /** Creates a new SnowballPorterFilterFactory */
+ public SnowballPorterFilterFactory(Map<String,String> args) {
+ super(args);
+ String cfgLanguage = args.remove("language");
+ if (cfgLanguage == null) {
+ language = "English";
+ } else {
+ language = cfgLanguage;
+ }
+ wordFiles = args.remove(PROTECTED_TOKENS);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
@Override
public void inform(ResourceLoader loader) throws IOException {
- String cfgLanguage = args.get("language");
- if (cfgLanguage != null)
- language = cfgLanguage;
-
String className = "org.tartarus.snowball.ext." + language + "Stemmer";
stemClass = loader.newInstance(className, SnowballProgram.class).getClass();
- String wordFiles = args.get(PROTECTED_TOKENS);
if (wordFiles != null) {
protectedWords = getWordSet(loader, wordFiles, false);
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -17,6 +17,8 @@ package org.apache.lucene.analysis.stand
* limitations under the License.
*/
+import java.util.Map;
+
import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.util.TokenFilterFactory;
@@ -24,17 +26,24 @@ import org.apache.lucene.analysis.standa
/**
* Factory for {@link ClassicFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_clssc" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.ClassicTokenizerFactory"/>
* <filter class="solr.ClassicFilterFactory"/>
* </analyzer>
* </fieldType></pre>
- *
- *
*/
public class ClassicFilterFactory extends TokenFilterFactory {
+
+ /** Creates a new ClassicFilterFactory */
+ public ClassicFilterFactory(Map<String,String> args) {
+ super(args);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
+
@Override
public TokenFilter create(TokenStream input) {
return new ClassicFilter(input);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerFactory.java Mon Apr 1 16:30:00 2013
@@ -25,26 +25,25 @@ import java.util.Map;
/**
* Factory for {@link ClassicTokenizer}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_clssc" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.ClassicTokenizerFactory" maxTokenLength="120"/>
* </analyzer>
* </fieldType></pre>
- *
- *
*/
-
public class ClassicTokenizerFactory extends TokenizerFactory {
+ private final int maxTokenLength;
- private int maxTokenLength;
-
- @Override
- public void init(Map<String,String> args) {
- super.init(args);
+ /** Creates a new ClassicTokenizerFactory */
+ public ClassicTokenizerFactory(Map<String,String> args) {
+ super(args);
assureMatchVersion();
- maxTokenLength = getInt("maxTokenLength",
+ maxTokenLength = getInt(args, "maxTokenLength",
StandardAnalyzer.DEFAULT_MAX_TOKEN_LENGTH);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
}
@Override
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -25,20 +25,23 @@ import org.apache.lucene.analysis.util.T
/**
* Factory for {@link StandardFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_stndrd" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.StandardTokenizerFactory"/>
* <filter class="solr.StandardFilterFactory"/>
* </analyzer>
* </fieldType></pre>
- *
*/
public class StandardFilterFactory extends TokenFilterFactory {
- @Override
- public void init(Map<String,String> args) {
- super.init(args);
+
+ /** Creates a new StandardFilterFactory */
+ public StandardFilterFactory(Map<String,String> args) {
+ super(args);
assureMatchVersion();
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
}
@Override
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerFactory.java Mon Apr 1 16:30:00 2013
@@ -25,24 +25,24 @@ import java.util.Map;
/**
* Factory for {@link StandardTokenizer}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_stndrd" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.StandardTokenizerFactory" maxTokenLength="255"/>
* </analyzer>
* </fieldType></pre>
- *
*/
-
public class StandardTokenizerFactory extends TokenizerFactory {
+ private final int maxTokenLength;
- private int maxTokenLength;
-
- @Override
- public void init(Map<String,String> args) {
- super.init(args);
+ /** Creates a new StandardTokenizerFactory */
+ public StandardTokenizerFactory(Map<String,String> args) {
+ super(args);
assureMatchVersion();
- maxTokenLength = getInt("maxTokenLength", StandardAnalyzer.DEFAULT_MAX_TOKEN_LENGTH);
+ maxTokenLength = getInt(args, "maxTokenLength", StandardAnalyzer.DEFAULT_MAX_TOKEN_LENGTH);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
}
@Override
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizerFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizerFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizerFactory.java Mon Apr 1 16:30:00 2013
@@ -25,26 +25,25 @@ import java.util.Map;
/**
* Factory for {@link UAX29URLEmailTokenizer}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_urlemail" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.UAX29URLEmailTokenizerFactory" maxTokenLength="255"/>
* </analyzer>
* </fieldType></pre>
- *
- *
*/
-
public class UAX29URLEmailTokenizerFactory extends TokenizerFactory {
+ private final int maxTokenLength;
- private int maxTokenLength;
-
- @Override
- public void init(Map<String,String> args) {
- super.init(args);
+ /** Creates a new UAX29URLEmailTokenizerFactory */
+ public UAX29URLEmailTokenizerFactory(Map<String,String> args) {
+ super(args);
assureMatchVersion();
- maxTokenLength = getInt("maxTokenLength",
+ maxTokenLength = getInt(args, "maxTokenLength",
StandardAnalyzer.DEFAULT_MAX_TOKEN_LENGTH);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
}
@Override
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -17,13 +17,15 @@ package org.apache.lucene.analysis.sv;
* limitations under the License.
*/
+import java.util.Map;
+
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.sv.SwedishLightStemFilter;
import org.apache.lucene.analysis.util.TokenFilterFactory;
/**
* Factory for {@link SwedishLightStemFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_svlgtstem" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.StandardTokenizerFactory"/>
@@ -31,9 +33,17 @@ import org.apache.lucene.analysis.util.T
* <filter class="solr.SwedishLightStemFilterFactory"/>
* </analyzer>
* </fieldType></pre>
- *
*/
public class SwedishLightStemFilterFactory extends TokenFilterFactory {
+
+ /** Creates a new SwedishLightStemFilterFactory */
+ public SwedishLightStemFilterFactory(Map<String,String> args) {
+ super(args);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
+
@Override
public TokenStream create(TokenStream input) {
return new SwedishLightStemFilter(input);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -25,7 +25,9 @@ import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CodingErrorAction;
import java.text.ParseException;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
@@ -41,7 +43,7 @@ import org.apache.lucene.util.Version;
/**
* Factory for {@link SynonymFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_synonym" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -52,8 +54,32 @@ import org.apache.lucene.util.Version;
* </fieldType></pre>
*/
public class SynonymFilterFactory extends TokenFilterFactory implements ResourceLoaderAware {
+ private final boolean ignoreCase;
+ private final String tokenizerFactory;
+ private final String synonyms;
+ private final String format;
+ private final boolean expand;
+
private SynonymMap map;
- private boolean ignoreCase;
+
+ public SynonymFilterFactory(Map<String,String> args) {
+ super(args);
+ ignoreCase = getBoolean(args, "ignoreCase", false);
+ tokenizerFactory = args.remove("tokenizerFactory");
+ if (tokenizerFactory != null) {
+ assureMatchVersion();
+ }
+ synonyms = args.remove("synonyms");
+ if (synonyms == null) {
+ throw new IllegalArgumentException("Missing required argument 'synonyms'.");
+ }
+ format = args.remove("format");
+ expand = getBoolean(args, "expand", true);
+
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
@Override
public TokenStream create(TokenStream input) {
@@ -64,12 +90,7 @@ public class SynonymFilterFactory extend
@Override
public void inform(ResourceLoader loader) throws IOException {
- final boolean ignoreCase = getBoolean("ignoreCase", false);
- this.ignoreCase = ignoreCase;
-
- String tf = args.get("tokenizerFactory");
-
- final TokenizerFactory factory = tf == null ? null : loadTokenizerFactory(loader, tf);
+ final TokenizerFactory factory = tokenizerFactory == null ? null : loadTokenizerFactory(loader, tokenizerFactory);
Analyzer analyzer = new Analyzer() {
@Override
@@ -80,7 +101,6 @@ public class SynonymFilterFactory extend
}
};
- String format = args.get("format");
try {
if (format == null || format.equals("solr")) {
// TODO: expose dedup as a parameter?
@@ -99,12 +119,7 @@ public class SynonymFilterFactory extend
/**
* Load synonyms from the solr format, "format=solr".
*/
- private SynonymMap loadSolrSynonyms(ResourceLoader loader, boolean dedup, Analyzer analyzer) throws IOException, ParseException {
- final boolean expand = getBoolean("expand", true);
- String synonyms = args.get("synonyms");
- if (synonyms == null)
- throw new IllegalArgumentException("Missing required argument 'synonyms'.");
-
+ private SynonymMap loadSolrSynonyms(ResourceLoader loader, boolean dedup, Analyzer analyzer) throws IOException, ParseException {
CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder()
.onMalformedInput(CodingErrorAction.REPORT)
.onUnmappableCharacter(CodingErrorAction.REPORT);
@@ -128,11 +143,6 @@ public class SynonymFilterFactory extend
* Load synonyms from the wordnet format, "format=wordnet".
*/
private SynonymMap loadWordnetSynonyms(ResourceLoader loader, boolean dedup, Analyzer analyzer) throws IOException, ParseException {
- final boolean expand = getBoolean("expand", true);
- String synonyms = args.get("synonyms");
- if (synonyms == null)
- throw new IllegalArgumentException("Missing required argument 'synonyms'.");
-
CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder()
.onMalformedInput(CodingErrorAction.REPORT)
.onUnmappableCharacter(CodingErrorAction.REPORT);
@@ -154,12 +164,17 @@ public class SynonymFilterFactory extend
// (there are no tests for this functionality)
private TokenizerFactory loadTokenizerFactory(ResourceLoader loader, String cname) throws IOException {
- TokenizerFactory tokFactory = loader.newInstance(cname, TokenizerFactory.class);
- tokFactory.setLuceneMatchVersion(luceneMatchVersion);
- tokFactory.init(args);
- if (tokFactory instanceof ResourceLoaderAware) {
- ((ResourceLoaderAware) tokFactory).inform(loader);
+ Map<String,String> args = new HashMap<String,String>();
+ args.put("luceneMatchVersion", getLuceneMatchVersion().toString());
+ Class<? extends TokenizerFactory> clazz = loader.findClass(cname, TokenizerFactory.class);
+ try {
+ TokenizerFactory tokFactory = clazz.getConstructor(Map.class).newInstance(args);
+ if (tokFactory instanceof ResourceLoaderAware) {
+ ((ResourceLoaderAware) tokFactory).inform(loader);
+ }
+ return tokFactory;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
}
- return tokFactory;
}
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/th/ThaiWordFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/th/ThaiWordFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/th/ThaiWordFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/th/ThaiWordFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -17,6 +17,8 @@ package org.apache.lucene.analysis.th;
* limitations under the License.
*/
+import java.util.Map;
+
import org.apache.lucene.analysis.th.ThaiWordFilter;
import org.apache.lucene.analysis.TokenStream;
@@ -24,19 +26,27 @@ import org.apache.lucene.analysis.util.T
/**
* Factory for {@link ThaiWordFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_thai" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.StandardTokenizerFactory"/>
* <filter class="solr.ThaiWordFilterFactory"/>
* </analyzer>
* </fieldType></pre>
- *
*/
public class ThaiWordFilterFactory extends TokenFilterFactory {
+
+ /** Creates a new ThaiWordFilterFactory */
+ public ThaiWordFilterFactory(Map<String,String> args) {
+ super(args);
+ assureMatchVersion();
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
+
@Override
public ThaiWordFilter create(TokenStream input) {
- assureMatchVersion();
return new ThaiWordFilter(luceneMatchVersion, input);
}
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/tr/TurkishLowerCaseFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/tr/TurkishLowerCaseFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/tr/TurkishLowerCaseFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/tr/TurkishLowerCaseFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -17,6 +17,8 @@ package org.apache.lucene.analysis.tr;
* limitations under the License.
*/
+import java.util.Map;
+
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tr.TurkishLowerCaseFilter;
import org.apache.lucene.analysis.util.AbstractAnalysisFactory;
@@ -25,16 +27,24 @@ import org.apache.lucene.analysis.util.T
/**
* Factory for {@link TurkishLowerCaseFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_trlwr" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.StandardTokenizerFactory"/>
* <filter class="solr.TurkishLowerCaseFilterFactory"/>
* </analyzer>
- * </fieldType></pre>
- *
+ * </fieldType></pre>
*/
public class TurkishLowerCaseFilterFactory extends TokenFilterFactory implements MultiTermAwareComponent {
+
+ /** Creates a new TurkishLowerCaseFilterFactory */
+ public TurkishLowerCaseFilterFactory(Map<String,String> args) {
+ super(args);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
+
@Override
public TokenStream create(TokenStream input) {
return new TurkishLowerCaseFilter(input);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AbstractAnalysisFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AbstractAnalysisFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AbstractAnalysisFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AbstractAnalysisFactory.java Mon Apr 1 16:30:00 2013
@@ -41,37 +41,29 @@ import java.util.regex.PatternSyntaxExce
* <p>
* The typical lifecycle for a factory consumer is:
* <ol>
- * <li>Create factory via its a no-arg constructor
- * <li>Set version emulation by calling {@link #setLuceneMatchVersion(Version)}
- * <li>Calls {@link #init(Map)} passing arguments as key-value mappings.
+ * <li>Create factory via its constructor (or via XXXFactory.forName)
* <li>(Optional) If the factory uses resources such as files, {@link ResourceLoaderAware#inform(ResourceLoader)} is called to initialize those resources.
* <li>Consumer calls create() to obtain instances.
* </ol>
*/
public abstract class AbstractAnalysisFactory {
- /** The original args, before init() processes them */
- private Map<String,String> originalArgs;
-
- /** The init args */
- protected Map<String,String> args;
+ /** The original args, before any processing */
+ private final Map<String,String> originalArgs;
/** the luceneVersion arg */
- protected Version luceneMatchVersion = null;
+ protected final Version luceneMatchVersion;
/**
* Initialize this factory via a set of key-value pairs.
*/
- public void init(Map<String,String> args) {
- originalArgs = Collections.unmodifiableMap(args);
- this.args = new HashMap<String,String>(args);
- }
-
- public Map<String,String> getArgs() {
- return args;
+ protected AbstractAnalysisFactory(Map<String,String> args) {
+ originalArgs = Collections.unmodifiableMap(new HashMap<String,String>(args));
+ String version = args.remove("luceneMatchVersion");
+ luceneMatchVersion = version == null ? null : Version.parseLeniently(version);
}
- public Map<String,String> getOriginalArgs() {
+ public final Map<String,String> getOriginalArgs() {
return originalArgs;
}
@@ -85,24 +77,20 @@ public abstract class AbstractAnalysisFa
}
}
- public void setLuceneMatchVersion(Version luceneMatchVersion) {
- this.luceneMatchVersion = luceneMatchVersion;
- }
-
- public Version getLuceneMatchVersion() {
+ public final Version getLuceneMatchVersion() {
return this.luceneMatchVersion;
}
- protected int getInt(String name) {
- return getInt(name, -1, false);
+ protected final int getInt(Map<String,String> args, String name) {
+ return getInt(args, name, -1, false);
}
- protected int getInt(String name, int defaultVal) {
- return getInt(name, defaultVal, true);
+ protected final int getInt(Map<String,String> args, String name, int defaultVal) {
+ return getInt(args, name, defaultVal, true);
}
- protected int getInt(String name, int defaultVal, boolean useDefault) {
- String s = args.get(name);
+ protected final int getInt(Map<String,String> args, String name, int defaultVal, boolean useDefault) {
+ String s = args.remove(name);
if (s == null) {
if (useDefault) {
return defaultVal;
@@ -112,12 +100,12 @@ public abstract class AbstractAnalysisFa
return Integer.parseInt(s);
}
- protected boolean getBoolean(String name, boolean defaultVal) {
- return getBoolean(name, defaultVal, true);
+ protected final boolean getBoolean(Map<String,String> args, String name, boolean defaultVal) {
+ return getBoolean(args, name, defaultVal, true);
}
- protected boolean getBoolean(String name, boolean defaultVal, boolean useDefault) {
- String s = args.get(name);
+ protected final boolean getBoolean(Map<String,String> args, String name, boolean defaultVal, boolean useDefault) {
+ String s = args.remove(name);
if (s==null) {
if (useDefault) return defaultVal;
throw new IllegalArgumentException("Configuration Error: missing parameter '" + name + "'");
@@ -128,13 +116,13 @@ public abstract class AbstractAnalysisFa
/**
* Compiles a pattern for the value of the specified argument key <code>name</code>
*/
- protected Pattern getPattern(String name) {
+ protected final Pattern getPattern(Map<String,String> args, String name) {
try {
- String pat = args.get(name);
+ String pat = args.remove(name);
if (null == pat) {
throw new IllegalArgumentException("Configuration Error: missing parameter '" + name + "'");
}
- return Pattern.compile(args.get(name));
+ return Pattern.compile(pat);
} catch (PatternSyntaxException e) {
throw new IllegalArgumentException
("Configuration Error: '" + name + "' can not be parsed in " +
@@ -146,7 +134,7 @@ public abstract class AbstractAnalysisFa
* Returns as {@link CharArraySet} from wordFiles, which
* can be a comma-separated list of filenames
*/
- protected CharArraySet getWordSet(ResourceLoader loader,
+ protected final CharArraySet getWordSet(ResourceLoader loader,
String wordFiles, boolean ignoreCase) throws IOException {
assureMatchVersion();
List<String> files = splitFileNames(wordFiles);
@@ -168,13 +156,13 @@ public abstract class AbstractAnalysisFa
/**
* Returns the resource's lines (with content treated as UTF-8)
*/
- protected List<String> getLines(ResourceLoader loader, String resource) throws IOException {
+ protected final List<String> getLines(ResourceLoader loader, String resource) throws IOException {
return WordlistLoader.getLines(loader.openResource(resource), IOUtils.CHARSET_UTF_8);
}
/** same as {@link #getWordSet(ResourceLoader, String, boolean)},
* except the input is in snowball format. */
- protected CharArraySet getSnowballWordSet(ResourceLoader loader,
+ protected final CharArraySet getSnowballWordSet(ResourceLoader loader,
String wordFiles, boolean ignoreCase) throws IOException {
assureMatchVersion();
List<String> files = splitFileNames(wordFiles);
@@ -209,7 +197,7 @@ public abstract class AbstractAnalysisFa
* @param fileNames the string containing file names
* @return a list of file names with the escaping backslashed removed
*/
- protected List<String> splitFileNames(String fileNames) {
+ protected final List<String> splitFileNames(String fileNames) {
if (fileNames == null)
return Collections.<String>emptyList();
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AnalysisSPILoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AnalysisSPILoader.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AnalysisSPILoader.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AnalysisSPILoader.java Mon Apr 1 16:30:00 2013
@@ -104,10 +104,10 @@ final class AnalysisSPILoader<S extends
this.services = Collections.unmodifiableMap(services);
}
- public S newInstance(String name) {
+ public S newInstance(String name, Map<String,String> args) {
final Class<? extends S> service = lookupClass(name);
try {
- return service.newInstance();
+ return service.getConstructor(Map.class).newInstance(args);
} catch (Exception e) {
throw new IllegalArgumentException("SPI class of type "+clazz.getName()+" with name '"+name+"' cannot be instantiated. " +
"This is likely due to a misconfiguration of the java class '" + service.getName() + "': ", e);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -18,6 +18,7 @@ package org.apache.lucene.analysis.util;
*/
import java.io.Reader;
+import java.util.Map;
import java.util.Set;
import org.apache.lucene.analysis.CharFilter;
@@ -32,8 +33,8 @@ public abstract class CharFilterFactory
new AnalysisSPILoader<CharFilterFactory>(CharFilterFactory.class);
/** looks up a charfilter by name from context classpath */
- public static CharFilterFactory forName(String name) {
- return loader.newInstance(name);
+ public static CharFilterFactory forName(String name, Map<String,String> args) {
+ return loader.newInstance(name, args);
}
/** looks up a charfilter class by name from context classpath */
@@ -61,6 +62,13 @@ public abstract class CharFilterFactory
loader.reload(classloader);
}
+ /**
+ * Initialize this factory via a set of key-value pairs.
+ */
+ protected CharFilterFactory(Map<String,String> args) {
+ super(args);
+ }
+
/** Wraps the given Reader with a CharFilter. */
public abstract Reader create(Reader input);
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ClasspathResourceLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ClasspathResourceLoader.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ClasspathResourceLoader.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ClasspathResourceLoader.java Mon Apr 1 16:30:00 2013
@@ -67,14 +67,23 @@ public final class ClasspathResourceLoad
throw new IOException("Resource not found: " + resource);
return stream;
}
+
+ @Override
+ public <T> Class<? extends T> findClass(String cname, Class<T> expectedType) {
+ try {
+ return Class.forName(cname, true, loader).asSubclass(expectedType);
+ } catch (Exception e) {
+ throw new RuntimeException("Cannot load class: " + cname, e);
+ }
+ }
@Override
public <T> T newInstance(String cname, Class<T> expectedType) {
+ Class<? extends T> clazz = findClass(cname, expectedType);
try {
- final Class<? extends T> clazz = Class.forName(cname, true, loader).asSubclass(expectedType);
return clazz.newInstance();
} catch (Exception e) {
- throw new RuntimeException("Cannot instantiate class: " + cname, e);
+ throw new RuntimeException("Cannot create instance: " + cname, e);
}
}
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ElisionFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ElisionFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ElisionFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ElisionFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -18,12 +18,14 @@ package org.apache.lucene.analysis.util;
*/
import java.io.IOException;
+import java.util.Map;
+
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.fr.FrenchAnalyzer;
/**
* Factory for {@link ElisionFilter}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_elsn" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.StandardTokenizerFactory"/>
@@ -32,22 +34,28 @@ import org.apache.lucene.analysis.fr.Fre
* articles="stopwordarticles.txt" ignoreCase="true"/>
* </analyzer>
* </fieldType></pre>
- *
*/
public class ElisionFilterFactory extends TokenFilterFactory implements ResourceLoaderAware, MultiTermAwareComponent {
-
+ private final String articlesFile;
+ private final boolean ignoreCase;
private CharArraySet articles;
+ /** Creates a new ElisionFilterFactory */
+ public ElisionFilterFactory(Map<String,String> args) {
+ super(args);
+ articlesFile = args.remove("articles");
+ ignoreCase = getBoolean(args, "ignoreCase", false);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
+
@Override
public void inform(ResourceLoader loader) throws IOException {
- String articlesFile = args.get("articles");
- boolean ignoreCase = getBoolean("ignoreCase", false);
-
- if (articlesFile != null) {
- articles = getWordSet(loader, articlesFile, ignoreCase);
- }
- if (articles == null) {
+ if (articlesFile == null) {
articles = FrenchAnalyzer.DEFAULT_ARTICLES;
+ } else {
+ articles = getWordSet(loader, articlesFile, ignoreCase);
}
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/FilesystemResourceLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/FilesystemResourceLoader.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/FilesystemResourceLoader.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/FilesystemResourceLoader.java Mon Apr 1 16:30:00 2013
@@ -91,4 +91,9 @@ public final class FilesystemResourceLoa
public <T> T newInstance(String cname, Class<T> expectedType) {
return delegate.newInstance(cname, expectedType);
}
+
+ @Override
+ public <T> Class<? extends T> findClass(String cname, Class<T> expectedType) {
+ return delegate.findClass(cname, expectedType);
+ }
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ResourceLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ResourceLoader.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ResourceLoader.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ResourceLoader.java Mon Apr 1 16:30:00 2013
@@ -30,8 +30,14 @@ public interface ResourceLoader {
*/
public InputStream openResource(String resource) throws IOException;
+
+ /**
+ * Finds class of the name and expected type
+ */
+ public <T> Class<? extends T> findClass(String cname, Class<T> expectedType);
+
/**
- * Creates a class of the name and expected type
+ * Creates an instance of the name and expected type
*/
// TODO: fix exception handling
public <T> T newInstance(String cname, Class<T> expectedType);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -17,6 +17,7 @@ package org.apache.lucene.analysis.util;
* limitations under the License.
*/
+import java.util.Map;
import java.util.Set;
import org.apache.lucene.analysis.TokenStream;
@@ -32,8 +33,8 @@ public abstract class TokenFilterFactory
new String[] { "TokenFilterFactory", "FilterFactory" });
/** looks up a tokenfilter by name from context classpath */
- public static TokenFilterFactory forName(String name) {
- return loader.newInstance(name);
+ public static TokenFilterFactory forName(String name, Map<String,String> args) {
+ return loader.newInstance(name, args);
}
/** looks up a tokenfilter class by name from context classpath */
@@ -60,6 +61,13 @@ public abstract class TokenFilterFactory
public static void reloadTokenFilters(ClassLoader classloader) {
loader.reload(classloader);
}
+
+ /**
+ * Initialize this factory via a set of key-value pairs.
+ */
+ protected TokenFilterFactory(Map<String,String> args) {
+ super(args);
+ }
/** Transform the specified input TokenStream */
public abstract TokenStream create(TokenStream input);
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenizerFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenizerFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenizerFactory.java Mon Apr 1 16:30:00 2013
@@ -21,6 +21,7 @@ import org.apache.lucene.analysis.Tokeni
import org.apache.lucene.util.AttributeSource.AttributeFactory;
import java.io.Reader;
+import java.util.Map;
import java.util.Set;
/**
@@ -33,8 +34,8 @@ public abstract class TokenizerFactory e
new AnalysisSPILoader<TokenizerFactory>(TokenizerFactory.class);
/** looks up a tokenizer by name from context classpath */
- public static TokenizerFactory forName(String name) {
- return loader.newInstance(name);
+ public static TokenizerFactory forName(String name, Map<String,String> args) {
+ return loader.newInstance(name, args);
}
/** looks up a tokenizer class by name from context classpath */
@@ -61,6 +62,13 @@ public abstract class TokenizerFactory e
public static void reloadTokenizers(ClassLoader classloader) {
loader.reload(classloader);
}
+
+ /**
+ * Initialize this factory via a set of key-value pairs.
+ */
+ protected TokenizerFactory(Map<String,String> args) {
+ super(args);
+ }
/** Creates a TokenStream of the specified input using the default attribute factory. */
public final Tokenizer create(Reader input) {
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/wikipedia/WikipediaTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/wikipedia/WikipediaTokenizerFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/wikipedia/WikipediaTokenizerFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/wikipedia/WikipediaTokenizerFactory.java Mon Apr 1 16:30:00 2013
@@ -19,21 +19,30 @@ package org.apache.lucene.analysis.wikip
import java.io.Reader;
import java.util.Collections;
+import java.util.Map;
import org.apache.lucene.analysis.util.TokenizerFactory;
import org.apache.lucene.util.AttributeSource.AttributeFactory;
/**
* Factory for {@link WikipediaTokenizer}.
- * <pre class="prettyprint" >
+ * <pre class="prettyprint">
* <fieldType name="text_wiki" class="solr.TextField" positionIncrementGap="100">
* <analyzer>
* <tokenizer class="solr.WikipediaTokenizerFactory"/>
* </analyzer>
- * </fieldType></pre>
- *
+ * </fieldType></pre>
*/
public class WikipediaTokenizerFactory extends TokenizerFactory {
+
+ /** Creates a new WikipediaTokenizerFactory */
+ public WikipediaTokenizerFactory(Map<String,String> args) {
+ super(args);
+ if (!args.isEmpty()) {
+ throw new IllegalArgumentException("Unknown parameters: " + args);
+ }
+ }
+
// TODO: add support for WikipediaTokenizer's advanced options.
@Override
public WikipediaTokenizer create(AttributeFactory factory, Reader input) {
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicFilters.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicFilters.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicFilters.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/ar/TestArabicFilters.java Mon Apr 1 16:30:00 2013
@@ -19,34 +19,23 @@ package org.apache.lucene.analysis.ar;
import java.io.Reader;
import java.io.StringReader;
-import java.util.Collections;
-import java.util.Map;
-import org.apache.lucene.analysis.BaseTokenStreamTestCase;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.Tokenizer;
-import org.apache.lucene.analysis.fa.PersianCharFilterFactory;
-import org.apache.lucene.analysis.standard.StandardTokenizerFactory;
+import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
/**
* Simple tests to ensure the Arabic filter Factories are working.
*/
-public class TestArabicFilters extends BaseTokenStreamTestCase {
+public class TestArabicFilters extends BaseTokenStreamFactoryTestCase {
/**
* Test ArabicNormalizationFilterFactory
*/
public void testNormalizer() throws Exception {
Reader reader = new StringReader("اÙØ°ÙÙ Ù
ÙÙÙت Ø£ÙÙ
اÙÙÙ
");
- StandardTokenizerFactory factory = new StandardTokenizerFactory();
- factory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
- ArabicNormalizationFilterFactory filterFactory = new ArabicNormalizationFilterFactory();
- filterFactory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
- Map<String, String> args = Collections.emptyMap();
- factory.init(args);
- filterFactory.init(args);
- Tokenizer tokenizer = factory.create(reader);
- TokenStream stream = filterFactory.create(tokenizer);
+ Tokenizer tokenizer = tokenizerFactory("Standard").create(reader);
+ TokenStream stream = tokenFilterFactory("ArabicNormalization").create(tokenizer);
assertTokenStreamContents(stream, new String[] {"اÙØ°ÙÙ", "Ù
ÙÙت", "اÙÙ
اÙÙÙ
"});
}
@@ -55,17 +44,9 @@ public class TestArabicFilters extends B
*/
public void testStemmer() throws Exception {
Reader reader = new StringReader("اÙØ°ÙÙ Ù
ÙÙÙت Ø£ÙÙ
اÙÙÙ
");
- StandardTokenizerFactory factory = new StandardTokenizerFactory();
- factory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
- ArabicNormalizationFilterFactory normFactory = new ArabicNormalizationFilterFactory();
- normFactory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
- ArabicStemFilterFactory stemFactory = new ArabicStemFilterFactory();
- Map<String, String> args = Collections.emptyMap();
- factory.init(args);
- normFactory.init(args);
- Tokenizer tokenizer = factory.create(reader);
- TokenStream stream = normFactory.create(tokenizer);
- stream = stemFactory.create(stream);
+ Tokenizer tokenizer = tokenizerFactory("Standard").create(reader);
+ TokenStream stream = tokenFilterFactory("ArabicNormalization").create(tokenizer);
+ stream = tokenFilterFactory("ArabicStem").create(stream);
assertTokenStreamContents(stream, new String[] {"Ø°ÙÙ", "Ù
ÙÙت", "اÙÙ
اÙÙÙ
"});
}
@@ -73,13 +54,32 @@ public class TestArabicFilters extends B
* Test PersianCharFilterFactory
*/
public void testPersianCharFilter() throws Exception {
- Reader reader = new StringReader("Ù
ÛâØ®Ùرد");
- PersianCharFilterFactory charfilterFactory = new PersianCharFilterFactory();
- StandardTokenizerFactory tokenizerFactory = new StandardTokenizerFactory();
- tokenizerFactory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
- Map<String, String> args = Collections.emptyMap();
- tokenizerFactory.init(args);
- TokenStream stream = tokenizerFactory.create(charfilterFactory.create(reader));
- assertTokenStreamContents(stream, new String[] { "Ù
Û", "Ø®Ùرد" });
+ Reader reader = charFilterFactory("Persian").create(new StringReader("Ù
ÛâØ®Ùرد"));
+ Tokenizer tokenizer = tokenizerFactory("Standard").create(reader);
+ assertTokenStreamContents(tokenizer, new String[] { "Ù
Û", "Ø®Ùرد" });
+ }
+
+ /** Test that bogus arguments result in exception */
+ public void testBogusArguments() throws Exception {
+ try {
+ tokenFilterFactory("ArabicNormalization", "bogusArg", "bogusValue");
+ fail();
+ } catch (IllegalArgumentException expected) {
+ assertTrue(expected.getMessage().contains("Unknown parameters"));
+ }
+
+ try {
+ tokenFilterFactory("Arabicstem", "bogusArg", "bogusValue");
+ fail();
+ } catch (IllegalArgumentException expected) {
+ assertTrue(expected.getMessage().contains("Unknown parameters"));
+ }
+
+ try {
+ charFilterFactory("Persian", "bogusArg", "bogusValue");
+ fail();
+ } catch (IllegalArgumentException expected) {
+ assertTrue(expected.getMessage().contains("Unknown parameters"));
+ }
}
}
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/bg/TestBulgarianStemFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/bg/TestBulgarianStemFilterFactory.java?rev=1463191&r1=1463190&r2=1463191&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/bg/TestBulgarianStemFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/bg/TestBulgarianStemFilterFactory.java Mon Apr 1 16:30:00 2013
@@ -20,23 +20,32 @@ package org.apache.lucene.analysis.bg;
import java.io.Reader;
import java.io.StringReader;
-import org.apache.lucene.analysis.BaseTokenStreamTestCase;
import org.apache.lucene.analysis.MockTokenizer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.Tokenizer;
+import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
/**
* Simple tests to ensure the Bulgarian stem filter factory is working.
*/
-public class TestBulgarianStemFilterFactory extends BaseTokenStreamTestCase {
+public class TestBulgarianStemFilterFactory extends BaseTokenStreamFactoryTestCase {
/**
* Ensure the filter actually stems text.
*/
public void testStemming() throws Exception {
Reader reader = new StringReader("компÑÑÑи");
Tokenizer tokenizer = new MockTokenizer(reader, MockTokenizer.WHITESPACE, false);
- BulgarianStemFilterFactory factory = new BulgarianStemFilterFactory();
- TokenStream stream = factory.create(tokenizer);
+ TokenStream stream = tokenFilterFactory("BulgarianStem").create(tokenizer);
assertTokenStreamContents(stream, new String[] { "компÑÑÑ" });
}
+
+ /** Test that bogus arguments result in exception */
+ public void testBogusArguments() throws Exception {
+ try {
+ tokenFilterFactory("BulgarianStem", "bogusArg", "bogusValue");
+ fail();
+ } catch (IllegalArgumentException expected) {
+ assertTrue(expected.getMessage().contains("Unknown parameters"));
+ }
+ }
}