[ 
https://issues.apache.org/jira/browse/SOLR-1664?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12792855#action_12792855
 ] 

Yonik Seeley commented on SOLR-1664:
------------------------------------

I like the direction I think... the current split between SchemaField and 
FieldType forces one to often use the following pattern:
schemaField.type().soSomething(schemaField,...)

I do think FieldType should basically become the factory for SchemaField.
FieldType methods not having to do with parsing parameters and creating 
SchemaFields should be deprecated and those we want to keep (i.e. not all of 
them) should be moved to SchemaField.  All creation of SchemaField instances 
should go through the appropriate FieldType.  All code in Solr that dispatches 
through FieldType should be changed to dispatch through the SchemaField 
instance.

This should lead to slightly cleaner code overall.  The downside is really that 
it doesn't end up accomplish much at all for the end user of Solr.


> Some Methods in FieldType actually should be in SchemaField
> -----------------------------------------------------------
>
>                 Key: SOLR-1664
>                 URL: https://issues.apache.org/jira/browse/SOLR-1664
>             Project: Solr
>          Issue Type: Improvement
>            Reporter: Noble Paul
>             Fix For: 1.5
>
>         Attachments: SOLR-1664.patch
>
>
> The following methods are only overridable from FieldType. 
> {code:java}
> public Field createField(SchemaField field, String externalVal, float boost) ;
> protected Field.TermVector getFieldTermVec(SchemaField field,String 
> internalVal) ;
> protected Field.Store getFieldStore(SchemaField field,String internalVal);
> protected Field.Index getFieldIndex(SchemaField field,String internalVal);
> public ValueSource getValueSource(SchemaField field, QParser parser);
> public Query getRangeQuery(QParser parser, SchemaField field, String part1, 
> String part2, boolean minInclusive, boolean maxInclusive) ;
> {code}
> if there is anything specific to be done on a per-field basis it is not 
> possible. if we allow overriding SchemaField it will be more flexible.
> I hope this can make it simpler to implement SOLR-1131
> So ,there are two ways of overriding a functionality.
> * Override Fieldtype#createSchemaField() and provide new implementation of 
> SchemaField
> * Override methods from FieldType itself(if the behavior is not per field ) 
> as it is now
> SchemaField is made non-final and Solr only invokes methods on SchemaField 
> and not FieldType directly

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to