[ https://issues.apache.org/jira/browse/LUCY-110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marvin Humphrey updated LUCY-110: --------------------------------- Attachment: arch.patch This diff introduces the Architecture class, discussed numerous times in both Lucy and Lucene forums as one approach to the modularization problem for index writers and readers. There is a division of labor between the two configuration classes Lucy::Plan::Architecture and Lucy::Index::IndexManager: * Architecture is responsible for unchanging aspects of the index, for instance what indexing components (document writer/reader pair, posting list writer/reader pair, etc.) will be used. * IndexManager is responsible for ephemeral, per-session configuration, such as lock factory, merge policy, etc Architecture uses a registration model rather than factory methods to initialize index subcomponents. An earlier prototype used factory methods, but the argument lists of factory methods render them more fragile and less extensible. Under a registration model, it's easier for Architecture to extract needed arguments from the object being modified as needed -- otherwise, it is necessary to break back compat to add arguments to a factory method. {code:none} - public incremented DeletionsReader* - Make_Deletions_Reader(Architecture *self, Schema *schema, Folder *folder, - Snapshot *snapshot, Segment *segment); + public void + Register_Deletions_Reader(Architecture *self, SegReader *reader); {code} Architecture objects are normally spawned using a factory method by Schema, so in order to change the Architecture, you must subclass Schema. (This spares us from having to serialize Architecture objects within the Schema json file.) It is an advanced class, available to experts but invisible to newcomers. This patch also introduces stub classes for Lucy::Plan::SegWriter and Lucy::Plan::SegReader. > Architecture > ------------ > > Key: LUCY-110 > URL: https://issues.apache.org/jira/browse/LUCY-110 > Project: Lucy > Issue Type: New Feature > Components: Core - Plan > Reporter: Marvin Humphrey > Assignee: Marvin Humphrey > Attachments: arch.patch > > > Lucy::Plan::Architecture encapsulates unchanging index configuration data > needed by index readers and writers, such as choice of index > subcomponents. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.