[
https://issues.apache.org/jira/browse/SOLR-813?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12640637#action_12640637
]
Ryan McKinley commented on SOLR-813:
------------------------------------
rather then create a new Filter for DoubleMetaphone, why not just extend
PhoneticFilter to support maxCodeLength?
Here is a quick untested bit that uses reflection to set the maxCodeLength --
the advantage is that it would also work for 'Metaphone' (though i'm not sure
anyone uses that).
Since the reflection only happens once at starup, it is not a big deal.
{code:java}
Index: src/java/org/apache/solr/analysis/PhoneticFilterFactory.java
===================================================================
--- src/java/org/apache/solr/analysis/PhoneticFilterFactory.java
(revision 704289)
+++ src/java/org/apache/solr/analysis/PhoneticFilterFactory.java
(working copy)
@@ -17,10 +17,10 @@
package org.apache.solr.analysis;
+import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
-import org.apache.solr.core.SolrConfig;
import org.apache.commons.codec.Encoder;
import org.apache.commons.codec.language.DoubleMetaphone;
import org.apache.commons.codec.language.Metaphone;
@@ -80,6 +80,13 @@
try {
encoder = clazz.newInstance();
+
+ // Try to set the maxCodeLength
+ String v = args.get( "maxCodeLength" );
+ if( v != null ) {
+ Method setter = encoder.getClass().getMethod( "setMaxCodeLength",
Integer.class );
+ setter.invoke( encoder, Integer.parseInt( v ) );
+ }
}
catch (Exception e) {
throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, "Error
initializing: "+name + "/"+clazz, e );
{code}
> Add new DoubleMetaphone Filter and Factory
> ------------------------------------------
>
> Key: SOLR-813
> URL: https://issues.apache.org/jira/browse/SOLR-813
> Project: Solr
> Issue Type: New Feature
> Components: search
> Affects Versions: 1.3
> Reporter: Todd Feak
> Priority: Minor
> Attachments: SOLR-813.patch
>
>
> The existing PhoneticFilter allows for use of the DoubleMetaphone encoder.
> However, it doesn't expose the maxCodeLength() setting, and it ignores the
> alternate encodings that the encoder provides for some words. This new filter
> is not as generic as the PhoneticFilter, but allows more detailed control
> over the DoubleMetaphone encoder.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.