Skip to main content
Version: 2026.0

GroupTerm

A group term for the index search. As all term typs this type supports the standard functions for setting the field name (entity and index) and the search weighting (boost). A group term allows to group terms to form a sub-query. This is very useful to control the Boolean logic for a query. This term object works similar to the IndexPatternConfiguration allowing to append term objects with different operators.

  • Sub-query: Create a simple sup-query by simply adding terms without defining a field name for the group. The following term searches for either "Lisa" or "Sommer" and "MeineFirma" (( Lisa OR Sommer ) AND meineFirma).

Example

<code>    // Assume that the followeing terms are defined fistname['Lisa'], lastname['Sommer']
// and orgName['meineFirma']

// '( Lisa OR Sommer )'
var group = indexsearch.createGroupTerm().or(firstname).or(lastname);
// '( Lisa OR Sommer ) AND meineFirma'
var patternConf = indexsearch.createPatternConfig().or(group).and(orgName);
</code>

The grouped terms can be specified with field names.

Example

<code>    // Assume that the followeing terms are defined fistname['firstname_value:Lisa'],
// lastname['lastname_value:Sommer'] and orgName['name_value:meineFirma']

// '( firstname_value:Lisa OR lastname_value:Sommer )'
var group = indexsearch.createGroupTerm().or(firstname).or(lastname);
// '( firstname_value:Lisa OR lastname_value:Sommer ) AND name_value:meineFirma'
var patternConf = indexsearch.createPatternConfig().or(group).and(orgName);
</code>
  • Grouping clauses within a index field: To apply two or more Boolean operators to a single index field in a search, add the Terms (without a field name) for the desired field to a single group and set the field name of the group term to the desired field. For example, the following group searches for a firstname field that matches "L*" but not "Lisa" (firstname_value:( +L* -Lisa )).

Example

<code>    // Assume that the followeing terms are defined prefixTerm['L*'] and singleName['Lisa']

// '( +L* -Lisa )'
var group = indexsearch.createGroupTerm().plus(prefixTerm).minus(singleName);

// Specify the field for the hole group.
group.setEntityField("Person_entity.FIRSTNAME");

// 'firstname_value:( +L* -Lisa )'
var patternConf = indexsearch.createPatternConfig().or(group);
</code>

This term object provides an isEmpty() method, that will return true if no terms where added. NOTE: Do not add empty group terms to an IndexPatternConfiguration or another group term. This can cause the resulting pattern to fail. Example:

Methods

and

and(pTerm): GroupTerm

Adds the term to the end of the pattern using the operator AND. If it is the first term of the pattern, it is added with the leading operator +. AND requires that this and the previous term be present for a match.

Parameters

pTerm
IIndexTerm

The term to be appended.

Returns

GroupTerm

getBoost

getBoost(): number

Returns the boost factor for this therm. The index search provides the relevance level of matching documents based on the terms found. Boosting allows you to control the relevance of a result document by boosting its term. The higher the boost factor, the more relevant the term will be. The default boost factor for each term is 1.0. The boost factor must always be a positiv value grater the 0.0.

Returns

number

The boost factor of this term.


getEntityField

getEntityField(): string

Returns

string

The defined entity field in which to search for the value. null if not set.


getIndexField

getIndexField(): string

Returns

string

The defined index field in which to search for the value. null if not set.


isEmpty

isEmpty(): boolean

Returns

boolean

true if the group term does not contain any terms.


minus

minus(pTerm): GroupTerm

Adds the term to the end of the pattern using the leading operator -. - prohibits this term. The - operator is functionally similar to the Boolean operator !

Parameters

pTerm
IIndexTerm

The term to be appended.

Returns

GroupTerm

not

not(pTerm): GroupTerm

Adds the term to the end of the pattern using the operator NOT. If it is the first term of the pattern, it is added with the leading operator -. NOT requires this term to be not present.

Parameters

pTerm
IIndexTerm

The term to be appended.

Returns

GroupTerm

or

or(pTerm): GroupTerm

Adds the term to the end of the pattern using the operator OR. If it is the first term of the pattern, it is added without a leading operator. OR requires that either this or the previous term (or both terms) be present for a match.

Parameters

pTerm
IIndexTerm

The term to be appended.

Returns

GroupTerm

plus

plus(pTerm): GroupTerm

Adds the term to the end of the pattern using the leading operator +. + requires this term to be present.

Parameters

pTerm
IIndexTerm

The term to be appended.

Returns

GroupTerm

setBoost

setBoost(pBoost): GroupTerm

Specifies the boost factor for this therm. The index search provides the relevance level of matching documents based on the terms found. Boosting allows you to control the relevance of a result document by boosting its term. The higher the boost factor, the more relevant the term will be. The implicit default boost factor for each term is 1.0. To increase the relevance specify a value greater then 1.0, e.g. 1.5. To decrease the relevance specify a value lower then 1.0, e.g. 0.5. The boost factor must always be a positiv value grater the 0.0.

Parameters

pBoost
number

the boost factor of this term.

Returns

GroupTerm

setEntityField

setEntityField(pEntityField): GroupTerm

Specifies the entity field in whose corresponding index field to search for the value. If not set, the value of the term is searched in all search fields specified in the IndexQuery. The names of the entity field must start with the defining entity, e.g. person_entity.FIRSTNAME. You can specify whether the index field defined for value or displayValue should be used, e.g. person_entity.FIRSTNAME.displayValue. If not specified, the index field defined for value is returned. The index field is looked up when calling searchIndex. The search fails if no index field can be determined for the specified entity field.

Parameters

pEntityField
string | number | boolean

the name of the entity field.

Returns

GroupTerm

setIndexField

setIndexField(pIndexFieldName): GroupTerm

Specifies the index field in which to search for the value. If not set, the value of the term is searched in all search fields specified in the IndexQuery.

Parameters

pIndexFieldName
string | number | boolean

the name of the index field.

Returns

GroupTerm

Example

<code>import("system.indexsearch");

var patternConf = indexsearch.createPatternConfig();

var a = indexsearch.createTerm("A");
var b = indexsearch.createTerm("B");
var c = indexsearch.createTerm("C");

var group = indexsearch.createGroupTerm();

// Add terms (a &amp; b) to the group.
// '( A B )'
group.or(a).or(b);

// specifies a field and a boost for the group term.
// 'field_value:( A B )^1.3'
term.setEntityField("entityName.FIELD.value")
.setBoost(1.3);

// Add the group to a pattern configuration.
// '+( A B ) +C'
patternConf.plus(group).plus(c);

// result =&gt; +field_value:( A B )^1.3 +C
var pattern = indexsearch.buildPatternString(patternConf);
</code>