: Maybe, but something needs that logic. Think relational database -- if you
: try and add a field to a schema (e.g., using some DBMS client GUI or vanilla
: command line SQL) where that name already exists, then you get a SQL
: exception. Similarly, SOLR should support such concepts. Maybe it doesn't go
        ...
: How are you screwed? If you add a field name that collides then as long as
: the FieldType checked you'd still be OK? Maybe FieldTypes that support
: multi-internal fields should have a requirement that they be configured from
: the schema.xml file themselves, so that the user configuring the entire
: schema can be made to deal with the namespacing at that level -- then if she

...but these are just two different solutions that illustrate my overall 
point: one way or another, the person editing the schema.xml file needs to 
know that these FieldTypes are going to be adding additional fields to the 
index and has to be aware of the posibility of field name collisions -- 
either because they are required to configure what those additional 
fieldnames are for these FieldTypes to prevent collisions, or because they 
have to know how to make sense of errors that might get logged if the 
system detects a collision.

So rather then try to make it entirely magical and behind the scnes, and 
still require them to know about it if a collision happens and they get an 
error, let's put it right out in front of them so they know about it and 
think it through.

if people feel that something like this...

  <fieldType name="latlon" type="LatLonFieldType" />
  <dynamicField name="location*" type=latlon" />

...where an end user can deal with these fields...

    location
    location_home
    location_work

...and under the covers the field type uses...

    location__LAT + location__LON
    location_home__LAT + location_home__LON
    location_work__LAT + location_work__LON

...is an abuse of the <dynamicField/> syntax, then we could accomplish the 
same thing with something like...

  <fieldType name="latlon" type="LatLonFieldType" />
  <field name="location" type=latlon" pattern="location__*" />
  <field name="location_home" type=latlon" pattern="location_home__*" />
  <field name="location_work" type=latlon" pattern="location_work__*" />

...but that would be more verbose, and would be somewhat confusing to try 
and use as a true dynamicField (ie: we want to support "home", "work" and 
anything else picked at run time)...

  <fieldType name="latlon" type="LatLonFieldType" />
  <field name="location" type=latlon" pattern="location*" />
  <dynamicfield name="location_*" type=latlon" pattern="??whagoeshere??" />


so why not just leverage the existing dynamicFieldsyntax/mechanism where 
schema creators already expect fields to be created at runtime, and 
already have to think about possible name collisions?

-Hoss

Reply via email to