1 Multi-valued Record Attributes and Controlled Record Attributes
2 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4 Having identified common use cases and reasonable restrictions that can be
5 placed on the feature set, we have extended the Record Attribute
6 infrastructure to support both the extraction and storage of all instances
7 of a defined Attribute found within a bibliographic record, as well as
8 provide new and more powerful indexing of existing data, in several ways.
10 Record Attributes can now be defined by configuration as either single-valued
11 or multi-valued. For any Attribute configured as single-valued, only the
12 first value extracted from a record will be stored. This configuration
13 parameter and restriction is in place to support potential query
14 optimizations based on foreknowledge of whether a given Attribute is multi-
17 Record Attributes will be defined by configuration as either controlled or
18 uncontrolled. A controlled Record Attribute is one that has entries in the
19 Coded Value Map infrastructure specifying the valid values the record may
20 carry for this attribute. If defined as a controlled Attribute, any unknown
21 values extracted from a record will be ignored. Uncontrolled Attributes,
22 however, may contain any value. This configuration parameter and restriction
23 also supports potential query optimization.
25 We store uncontrolled attribute values in a new table with a monotonically
26 decreasing ID sequence, separating it from controlled values, reducing storage
27 requirements by retaining only unique values, and making lookup faster.
32 * A Record Attribute's values must match Coded Value Map entries if it is to be a Controlled Attribute. Coded Value Map control is indicated by a new "controlled" boolean on the config.record_attr_definition table.
33 * Record Attributes must "opt in" to multi-valued-ness. Record Attributes will opt in via a new "multi" boolean on config.record_attr_definition; this restriction enforces site config requirements by being explicit about the definition of "multi" fields.
34 * If controlled but not opt'd in to multi-mode, only the first value will be recorded but the new search mechanism will be used.
35 * Only single-valued Record Attributes will be available for use by the system as Sort Axes.
36 * Only controlled Record Attributes will be available for use by the TPAC as dynamically generated filter UI components, such as filter dropdowns or multi-selects.
38 New External Dependency
39 +++++++++++++++++++++++
41 This new feature requires the addition of the intarray extension to Postgres.
42 This is a stock extension available on most linux distributions via the same
43 package as the already-required plperl extension.