You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2013/05/15 00:09:15 UTC
svn commit: r1482619 - in /lucene/dev/branches/lucene_solr_4_3: ./
dev-tools/ lucene/ lucene/analysis/
lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/
lucene/analysis/common/src/test/org/apache/lucene/analysis/synonym/
lucene/analys...
Author: hossman
Date: Tue May 14 22:09:13 2013
New Revision: 1482619
URL: http://svn.apache.org/r1482619
Log:
SOLR-4813: Fix SynonymFilterFactory to allow init parameters for tokenizer factory used when parsing synonyms file (merge r1482527; and r1479892 for needed enhancements in BaseTokenStreamFactoryTestCase)
Modified:
lucene/dev/branches/lucene_solr_4_3/ (props changed)
lucene/dev/branches/lucene_solr_4_3/dev-tools/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/BUILD.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/CHANGES.txt (contents, props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/JRE_VERSION_MIGRATION.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/LICENSE.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/MIGRATE.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/NOTICE.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/README.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/SYSTEM_REQUIREMENTS.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/analysis/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/FSTSynonymFilterFactory.java
lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SlowSynonymFilterFactory.java
lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java
lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/test/org/apache/lucene/analysis/synonym/TestSynonymFilterFactory.java
lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/BaseTokenStreamFactoryTestCase.java (contents, props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyFilterFactory.java (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/backwards/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/benchmark/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/build.xml (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/classification/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/classification/build.xml (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/classification/ivy.xml (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/classification/src/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/codecs/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/common-build.xml (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/core/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/index/index.40.cfs.zip (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/index/index.40.nocfs.zip (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/index/index.40.optimized.cfs.zip (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/index/index.40.optimized.nocfs.zip (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/search/TestSort.java (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/search/TestSortDocValues.java (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/search/TestSortRandom.java (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/search/TestTopFieldCollector.java (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/core/src/test/org/apache/lucene/search/TestTotalHitCountCollector.java (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/demo/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/facet/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/grouping/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/highlighter/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/ivy-settings.xml (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/join/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/licenses/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/memory/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/misc/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/module-build.xml (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/queries/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionQuerySort.java (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/queryparser/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/sandbox/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/site/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/spatial/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/suggest/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/test-framework/ (props changed)
lucene/dev/branches/lucene_solr_4_3/lucene/tools/ (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/ (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/lucene_solr_4_3/solr/LICENSE.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/NOTICE.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/README.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/SYSTEM_REQUIREMENTS.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/build.xml (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/cloud-dev/ (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/common-build.xml (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/contrib/ (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/core/ (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/core/src/test/org/apache/solr/core/TestConfig.java (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/example/ (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/licenses/ (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/licenses/httpclient-LICENSE-ASL.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/licenses/httpclient-NOTICE.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/licenses/httpcore-LICENSE-ASL.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/licenses/httpcore-NOTICE.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/licenses/httpmime-LICENSE-ASL.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/licenses/httpmime-NOTICE.txt (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/scripts/ (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/site/ (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/solrj/ (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/test-framework/ (props changed)
lucene/dev/branches/lucene_solr_4_3/solr/webapp/ (props changed)
Modified: lucene/dev/branches/lucene_solr_4_3/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_3/lucene/CHANGES.txt?rev=1482619&r1=1482618&r2=1482619&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_3/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_4_3/lucene/CHANGES.txt Tue May 14 22:09:13 2013
@@ -8,7 +8,8 @@ http://s.apache.org/luceneversions
Bug Fixes
-
+* SOLR-4813: Fix SynonymFilterFactory to allow init parameters for
+ tokenizer factory used when parsing synonyms file. (Shingo Sasaki, hossman)
======================= Lucene 4.3.0 =======================
Modified: lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/FSTSynonymFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/FSTSynonymFilterFactory.java?rev=1482619&r1=1482618&r2=1482619&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/FSTSynonymFilterFactory.java (original)
+++ lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/FSTSynonymFilterFactory.java Tue May 14 22:09:13 2013
@@ -26,6 +26,7 @@ import java.nio.charset.CharsetDecoder;
import java.nio.charset.CodingErrorAction;
import java.text.ParseException;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -54,19 +55,27 @@ final class FSTSynonymFilterFactory exte
private final String synonyms;
private final String format;
private final boolean expand;
+ private final Map<String, String> tokArgs = new HashMap<String, String>();
private SynonymMap map;
public FSTSynonymFilterFactory(Map<String,String> args) {
super(args);
ignoreCase = getBoolean(args, "ignoreCase", false);
+ synonyms = require(args, "synonyms");
+ format = get(args, "format");
+ expand = getBoolean(args, "expand", true);
+
tokenizerFactory = get(args, "tokenizerFactory");
if (tokenizerFactory != null) {
assureMatchVersion();
+ tokArgs.put("luceneMatchVersion", getLuceneMatchVersion().toString());
+ for (Iterator<String> itr = args.keySet().iterator(); itr.hasNext();) {
+ String key = itr.next();
+ tokArgs.put(key.replaceAll("^tokenizerFactory\\.",""), args.get(key));
+ itr.remove();
+ }
}
- synonyms = require(args, "synonyms");
- format = get(args, "format");
- expand = getBoolean(args, "expand", true);
if (!args.isEmpty()) {
throw new IllegalArgumentException("Unknown parameters: " + args);
}
@@ -155,11 +164,9 @@ final class FSTSynonymFilterFactory exte
// (there are no tests for this functionality)
private TokenizerFactory loadTokenizerFactory(ResourceLoader loader, String cname) throws IOException {
- 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);
+ TokenizerFactory tokFactory = clazz.getConstructor(Map.class).newInstance(tokArgs);
if (tokFactory instanceof ResourceLoaderAware) {
((ResourceLoaderAware) tokFactory).inform(loader);
}
Modified: lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SlowSynonymFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SlowSynonymFilterFactory.java?rev=1482619&r1=1482618&r2=1482619&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SlowSynonymFilterFactory.java (original)
+++ lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SlowSynonymFilterFactory.java Tue May 14 22:09:13 2013
@@ -27,6 +27,7 @@ import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -48,6 +49,7 @@ final class SlowSynonymFilterFactory ext
private final boolean ignoreCase;
private final boolean expand;
private final String tf;
+ private final Map<String, String> tokArgs = new HashMap<String, String>();
public SlowSynonymFilterFactory(Map<String,String> args) {
super(args);
@@ -56,6 +58,15 @@ final class SlowSynonymFilterFactory ext
expand = getBoolean(args, "expand", true);
tf = get(args, "tokenizerFactory");
+ if (tf != null) {
+ assureMatchVersion();
+ tokArgs.put("luceneMatchVersion", getLuceneMatchVersion().toString());
+ for (Iterator<String> itr = args.keySet().iterator(); itr.hasNext();) {
+ String key = itr.next();
+ tokArgs.put(key.replaceAll("^tokenizerFactory\\.",""), args.get(key));
+ itr.remove();
+ }
+ }
if (!args.isEmpty()) {
throw new IllegalArgumentException("Unknown parameters: " + args);
}
@@ -169,11 +180,9 @@ final class SlowSynonymFilterFactory ext
}
private TokenizerFactory loadTokenizerFactory(ResourceLoader loader, String cname) throws IOException {
- 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);
+ TokenizerFactory tokFactory = clazz.getConstructor(Map.class).newInstance(tokArgs);
if (tokFactory instanceof ResourceLoaderAware) {
((ResourceLoaderAware) tokFactory).inform(loader);
}
Modified: lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java?rev=1482619&r1=1482618&r2=1482619&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java (original)
+++ lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilterFactory.java Tue May 14 22:09:13 2013
@@ -36,9 +36,18 @@ import org.apache.lucene.analysis.util.T
* <tokenizer class="solr.WhitespaceTokenizerFactory"/>
* <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
* format="solr" ignoreCase="false" expand="true"
- * tokenizerFactory="solr.WhitespaceTokenizerFactory"/>
+ * tokenizerFactory="solr.WhitespaceTokenizerFactory"
+ * [optional tokenizer factory parameters]/>
* </analyzer>
* </fieldType></pre>
+ *
+ * <p>
+ * An optional param name prefix of "tokenizerFactory." may be used for any
+ * init params that the SynonymFilterFactory needs to pass to the specified
+ * TokenizerFactory. If the TokenizerFactory expects an init parameters with
+ * the same name as an init param used by the SynonymFilterFactory, the prefix
+ * is mandatory.
+ * </p>
*/
public class SynonymFilterFactory extends TokenFilterFactory implements ResourceLoaderAware {
private final TokenFilterFactory delegator;
@@ -67,4 +76,14 @@ public class SynonymFilterFactory extend
public void inform(ResourceLoader loader) throws IOException {
((ResourceLoaderAware) delegator).inform(loader);
}
+
+ /**
+ * Access to the delegator TokenFilterFactory for test verification
+ *
+ * @deprecated Method exists only for testing 4x, will be removed in 5.0
+ * @lucene.internal
+ */
+ TokenFilterFactory getDelegator() {
+ return delegator;
+ }
}
Modified: lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/test/org/apache/lucene/analysis/synonym/TestSynonymFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/test/org/apache/lucene/analysis/synonym/TestSynonymFilterFactory.java?rev=1482619&r1=1482618&r2=1482619&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/test/org/apache/lucene/analysis/synonym/TestSynonymFilterFactory.java (original)
+++ lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/test/org/apache/lucene/analysis/synonym/TestSynonymFilterFactory.java Tue May 14 22:09:13 2013
@@ -19,10 +19,13 @@ package org.apache.lucene.analysis.synon
import java.io.Reader;
import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Map;
import org.apache.lucene.analysis.MockTokenizer;
import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.analysis.synonym.SynonymFilter;
+import org.apache.lucene.analysis.pattern.PatternTokenizerFactory;
+import org.apache.lucene.analysis.util.TokenFilterFactory;
import org.apache.lucene.analysis.util.BaseTokenStreamFactoryTestCase;
import org.apache.lucene.analysis.util.ClasspathResourceLoader;
import org.apache.lucene.analysis.util.StringMockResourceLoader;
@@ -91,4 +94,83 @@ public class TestSynonymFilterFactory ex
assertTrue(expected.getMessage().contains("Unknown parameters"));
}
}
+
+ static final String TOK_SYN_ARG_VAL = "argument";
+ static final String TOK_FOO_ARG_VAL = "foofoofoo";
+
+ /** Test that we can parse TokenierFactory's arguments */
+ public void testTokenizerFactoryArguments() throws Exception {
+ // diff versions produce diff delegator behavior,
+ // all should be (mostly) equivilent for our test purposes.
+ doTestTokenizerFactoryArguments(Version.LUCENE_33,
+ SlowSynonymFilterFactory.class);
+ doTestTokenizerFactoryArguments(Version.LUCENE_34,
+ FSTSynonymFilterFactory.class);
+ doTestTokenizerFactoryArguments(Version.LUCENE_35,
+ FSTSynonymFilterFactory.class);
+
+ doTestTokenizerFactoryArguments(Version.LUCENE_CURRENT,
+ FSTSynonymFilterFactory.class);
+ }
+
+ protected void doTestTokenizerFactoryArguments(final Version ver,
+ final Class delegatorClass)
+ throws Exception {
+
+ final String clazz = PatternTokenizerFactory.class.getName();
+ TokenFilterFactory factory = null;
+
+ // simple arg form
+ factory = tokenFilterFactory("Synonym", ver,
+ "synonyms", "synonyms.txt",
+ "tokenizerFactory", clazz,
+ "pattern", "(.*)",
+ "group", "0");
+ assertDelegator(factory, delegatorClass);
+
+ // prefix
+ factory = tokenFilterFactory("Synonym", ver,
+ "synonyms", "synonyms.txt",
+ "tokenizerFactory", clazz,
+ "tokenizerFactory.pattern", "(.*)",
+ "tokenizerFactory.group", "0");
+ assertDelegator(factory, delegatorClass);
+
+ // sanity check that sub-PatternTokenizerFactory fails w/o pattern
+ try {
+ factory = tokenFilterFactory("Synonym", ver,
+ "synonyms", "synonyms.txt",
+ "tokenizerFactory", clazz);
+ fail("tokenizerFactory should have complained about missing pattern arg");
+ } catch (Exception expected) {
+ // :NOOP:
+ }
+
+ // sanity check that sub-PatternTokenizerFactory fails on unexpected
+ try {
+ factory = tokenFilterFactory("Synonym", ver,
+ "synonyms", "synonyms.txt",
+ "tokenizerFactory", clazz,
+ "tokenizerFactory.pattern", "(.*)",
+ "tokenizerFactory.bogusbogusbogus", "bogus",
+ "tokenizerFactory.group", "0");
+ fail("tokenizerFactory should have complained about missing pattern arg");
+ } catch (Exception expected) {
+ // :NOOP:
+ }
+ }
+ private static void assertDelegator(final TokenFilterFactory factory,
+ final Class delegatorClass) {
+ assertNotNull(factory);
+ assertTrue("factory not expected class: " + factory.getClass(),
+ factory instanceof SynonymFilterFactory);
+ SynonymFilterFactory synFac = (SynonymFilterFactory) factory;
+ Object delegator = synFac.getDelegator();
+ assertNotNull(delegator);
+ assertTrue("delegator not expected class: " + delegator.getClass(),
+ delegatorClass.isInstance(delegator));
+
+ }
}
+
+
Modified: lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/BaseTokenStreamFactoryTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/BaseTokenStreamFactoryTestCase.java?rev=1482619&r1=1482618&r2=1482619&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/BaseTokenStreamFactoryTestCase.java (original)
+++ lucene/dev/branches/lucene_solr_4_3/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/BaseTokenStreamFactoryTestCase.java Tue May 14 22:09:13 2013
@@ -72,14 +72,23 @@ public abstract class BaseTokenStreamFac
}
return factory;
}
-
+
/**
* Returns a fully initialized TokenizerFactory with the specified name and key-value arguments.
* {@link ClasspathResourceLoader} is used for loading resources, so any required ones should
* be on the test classpath.
*/
protected TokenizerFactory tokenizerFactory(String name, String... keysAndValues) throws Exception {
- return tokenizerFactory(name, TEST_VERSION_CURRENT, new ClasspathResourceLoader(getClass()), keysAndValues);
+ return tokenizerFactory(name, TEST_VERSION_CURRENT, keysAndValues);
+ }
+
+ /**
+ * Returns a fully initialized TokenizerFactory with the specified name and key-value arguments.
+ * {@link ClasspathResourceLoader} is used for loading resources, so any required ones should
+ * be on the test classpath.
+ */
+ protected TokenizerFactory tokenizerFactory(String name, Version version, String... keysAndValues) throws Exception {
+ return tokenizerFactory(name, version, new ClasspathResourceLoader(getClass()), keysAndValues);
}
/**
@@ -89,14 +98,23 @@ public abstract class BaseTokenStreamFac
protected TokenizerFactory tokenizerFactory(String name, Version matchVersion, ResourceLoader loader, String... keysAndValues) throws Exception {
return (TokenizerFactory) analysisFactory(TokenizerFactory.lookupClass(name), matchVersion, loader, keysAndValues);
}
-
+
+ /**
+ * Returns a fully initialized TokenFilterFactory with the specified name and key-value arguments.
+ * {@link ClasspathResourceLoader} is used for loading resources, so any required ones should
+ * be on the test classpath.
+ */
+ protected TokenFilterFactory tokenFilterFactory(String name, Version version, String... keysAndValues) throws Exception {
+ return tokenFilterFactory(name, version, new ClasspathResourceLoader(getClass()), keysAndValues);
+ }
+
/**
* Returns a fully initialized TokenFilterFactory with the specified name and key-value arguments.
* {@link ClasspathResourceLoader} is used for loading resources, so any required ones should
* be on the test classpath.
*/
protected TokenFilterFactory tokenFilterFactory(String name, String... keysAndValues) throws Exception {
- return tokenFilterFactory(name, TEST_VERSION_CURRENT, new ClasspathResourceLoader(getClass()), keysAndValues);
+ return tokenFilterFactory(name, TEST_VERSION_CURRENT, keysAndValues);
}
/**
Modified: lucene/dev/branches/lucene_solr_4_3/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_3/solr/CHANGES.txt?rev=1482619&r1=1482618&r2=1482619&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_3/solr/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_4_3/solr/CHANGES.txt Tue May 14 22:09:13 2013
@@ -57,6 +57,10 @@ Bug Fixes
* SOLR-4807: The zkcli script now works with log4j. The zkcli.bat script
was broken on Windows in 4.3.0, now it works. (Shawn Heisey)
+* SOLR-4813: Fix SynonymFilterFactory to allow init parameters for
+ tokenizer factory used when parsing synonyms file. (Shingo Sasaki, hossman)
+
+
Other Changes
----------------------