It feels like something we've overlooked in this discussion is whether we 
need to worry about any FieldType API changes needed to make these new 
"PolyField" classes aware of when they are multivalued.

The API suggestions grant made gives the FieldTYpe the ability to return a 
Filed[] from a single field value input -- but it doesn't provide any 
information about wether that field value is one of many values we're 
indexing for this field name.

Imagine that i want to make an index of people i know.  Each person also 
has multiple locations where they can frequently be found (home, work, 
gym, girlfriends house, favorite coffee shop, etc..).  My common case is 
to search for people, not locations, so it doesn't make sense to flatten 
out and have a doc for each person+location, i just want a single doc per 
person, but htat means i need a "locations" field that's multivalued.

If i'm using a simple "LatLonFieldType" that splits my comma seperated 
coordinate string into a "locations__LAT" and a "locations__LON" field 
then  iassume it needs to do something special in the multiValued case to 
make sure later "near" searches don't get confused and think that the lat 
from my "work" and the lon from my "home" are actaully a third location.

how do we solve this?

I suppose we could just rely on mathing termPosition information, but that 
means the FieldType needs a way to specify the Analyzer for all of the 
field names it creates on the fly (another argument for reusing 
dynamicFields i guess) to specify matching increments -- but that seems 
somewhat brittle: what about complex PolyFieldTypes that want to create 
variable number of Field's based on the input?

ie: as i recall, if you want to index coordinates of polygon bounding 
boxes using cartisien grid fields, you need more field names for big 
polygons then you do for small polygons -- so what if someone wants a 
multivalued PolyField and indexes very big and very small polygons? ... 
termPositions doens't seem like it really cuts it here.



-Hoss

Reply via email to