Hi,

Schema API add-field, add-dynamic-field, and add-copy-field currently
persist the managed schema and reload every core using that configset.
Reload calls newIndexWriter(), which closes the old IndexWriter and waits
for running merges while holding the writer lock. Under continuous
indexing this blocks updates until those merges finish. Vector fields make
the merges expensive, so the stall can last for minutes.

Schemaless mode already adds fields without a reload: persist the managed
schema and install it with setLatestSchema(). Writes see the new field
because the IndexWriter reads the core's latest schema. I would like the
same for these three Schema API operations only. Delete and replace
operations would still reload.

One difference from schemaless: after installing the schema, open a new
searcher without committing, so queries can use the new field immediately.
The current searcher keeps the old schema.

Any objection to this approach?

Thanks,
Li Enlai

This message was drafted with AI assistance and reviewed by me.

Reply via email to