some days ago i added a new dynamic field via api:
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-dynamic-field": { "name": "*_lrs", "type": "location_rpt", "indexed":
true, "stored": true, "omitNorms":true, "multiValued": true } }'
http://localhost:8983/api/cores/profile_v2_shard1_replica_n1/schema
use case is that users may have multiple locations (home location, last
location, and additional locations) and they should be discovered by other
users via all of them.
after adding the new dynamic field. search performance degraded (not searching
via the new field geo_lrs, existing index using the same schema with location
field not using multiple values).
i found out (via zk conf down + diff) that field definition changed from:
- <fieldType name="location_rpt"
class="solr.SpatialRecursivePrefixTreeFieldType" geo="true" maxDistErr="0.01"
distErrPct="0.025" distanceUnits="kilometers"/>
+ <fieldType name="location_rpt"
class="solr.SpatialRecursivePrefixTreeFieldType" geo="true" omitNorms="true"
omitTermFreqAndPositions="true" maxDistErr="0.01" termOffsets="false"
distErrPct="0.025" distanceUnits="kilometers" termPositions="false"
omitPositions="true"/>
i don't know why this happend implicitely and have no idea why performance
degraded (in general if these additional norms and stuff is not needed, index
should be smaller and probably faster)? After more and more users are updated
with the new field the number of slow requests get higher and higher.