Installation

Prerequisites

  • The icat lucene server distribution: icat.lucene-3.0.0-SNAPSHOT-distro.zip
  • Java 11+
  • A suitable deployed application server that supports JakartaEE 10+. Testing has been carried out with Payara Server Community 6. Other applications servers such as GlassFish and WildFly may work but have not been tested. Glassfish installation instructions are available.
  • Python 3.6+

The setup.properties file

container
Values must be chosen from: TargetServer Though only Glassfish is working properly at the moment.
home
is the top level of the container installation. For Glassfish it must contain "glassfish/domains" and for JBoss (wildfly) it must contain jboss-modules.jar.
port
is the administration port of the container which is typically 4848 for Glassfish and 9990 for JBoss.
secure
must be set to true or false. If true then only https and not http connections will be allowed.

The logback.xml file

If you wish to modify the provided logging levels then rename logback.xml.example to logback.xml and edit to suit.

The run.properties file

directory
The path to a directory (whose parent must exist) in which to store the lucene index. Any environment variables will be respected.
commitSeconds
the interval in seconds between committing lucene changes to disk and updating the index.
maxShardSize
The maximum number of documents to store in a single index before "sharding" into an additional index. All sharded indices are searched at once when performing a search. Has a maximum value of 2147483648 (max int + 1).
ip
Ranges of ip addresses to accept requests from. This should be as restrictive as possible - just list the icats you need to listen to. Provide a space separated list of allowed values. These take the form of an IPV4 or IPV6 address followed by the number of bits (starting from the most significant) to consider. For example 127.0.0.1/32 is the IPV4 value for localhost.
units
Recognised unit names/symbols. Each symbol recognised by indriya's SimpleUnitFormat should be followed by a colon, and then a comma separated list of units measuring the same property. If the unit is simply an alias (e.g. "K: kelvin") this is sufficient. If a conversion is required, it should be followed by this factor (e.g. "J: eV 1.602176634e-19"). Different units can be separated by a semi-colon.
facetFields
The names of fields which should be stored as facetable. The names should correspond to how the field appears in the Lucene index, which may be different to how it is represented in the ICAT database due to flattening of one to one relationships between entities. Accurate field names can be taken from `getDoc` function(s) in icat.server. Note that in order to be available at search time, the field must have been specified when indexing the documents.
aggregateFiles
Aggregate file sizes/counts for Datasets and Investigations as Datafiles are added or modified (i.e. in real time). This can have a significant performance impact when writing to the index. If "false", icat.server can instead be configured to update sizes at a regular intervals.