On Nov 28, 2009, at 7:37 PM, Chris Hostetter wrote:

> 
> : I don't think it's useful to somehow programmatically access the list
> : of fields that a fieldType could output.
> 
> based on my understanding of the potential types of use cases we're 
> talking about, i think i agree with you.  It seems like the most crucial 
> aspect is that a FieldType has a way of producing multiple 
> o.a.l.document.Field instances (potentially with different field names) 
> from a single String input at index time.  this can be done with something 
> like the API that Grant mentioned earlier.
> 
> For anything except non-trivial use cases, any code (like a query parser) 
> attempting to deal with this fields is going to need to be very special 
> purpose and have direct knowledge of the code in the FieldType.  if a 
> "CartesienGeoSearchQParser" is asked to parse 
> "store_location:89.3,45.4~5miles" it can throw a parse exception if 
> IndexSchema.getFieldType("store_location") isn't an instanceof 
> "CartesianGeoSearchFieldType" -- assuming it is: it can cast it and call 
> CartesianGeoSearchFieldType specific methods to find out everything it 
> needs to know about what multitudes of field names that specific instance 
> produced based on it's configuration.  (side thought: we may want to add a 
> "getFieldTypesByClass" method to the IndexSchema so QParsers and 
> SearchComponents can get lists of fields matching special cases they want 
> to know about -- but that's a secondary concern)
> 
> One thing that concerns me is potential field name collision -- where one 
> of these new multifield producing FieldTypes might want to creat a name 
> that happens to collide with a field the user has already declared.  
> 
> Using Double underscores kind of feels like a hack, what i keep wondering 
> is if we can't leverage dynamicFields here.  if we require that these 
> FieldTypes be declared using <dynamicField> delcarations (they could error 
> on init otherwise) then the wildcard nature of the name tells the 
> FieldType where it's allowed to add things to the pattern to make unique 
> field names in the index -- and they can still be used as true dynamic 
> fields, as long as they always add to the field name given to them. 
> something like...
> 
>   <dynamicField name="location*" type="geo1" />

I thought about this too.  It is what Local Solr currently does (although it 
expects a certain prefix, too, I believe).  However, it seems a bit 
unnecessary, as now the user needs to use both the field type and the dynamic 
field in order to get it to work, whereas I don't think they should have to do 
that, as it isn't in line with the notion of a field type.  FieldTypes 
currently can be used for any fields, both regular and dynamic.

Reply via email to