cts.valueMatch( range-indexes as cts.reference[], pattern as xs.anyAtomicType, [options as String[]], [query as cts.query?], [quality-weight as Number?], [forest-ids as (Number|String)[]] ) as Sequence
Returns values from the specified value lexicon(s) that match the specified wildcard pattern. Value lexicons are implemented using range indexes; consequently this function requires a range index for each index reference specified in the function. If there is not a range index configured for each of the specified references, then an exception is thrown.
Parameters | |
---|---|
range-indexes | A sequence of references to range indexes. |
pattern | A pattern to match. The parameter type must match the lexicon type. String parameters may include wildcard characters. |
options |
Options. The default is ().
Options include:
|
query |
Only include values in fragments selected by the cts:query ,
and compute frequencies from this set of included values.
The values do not need to match the query, but they must occur in
fragments selected by the query.
The fragments are not filtered to ensure they match the query,
but instead selected in the same manner as
"unfiltered" cts.search
operations. If a string
is entered, the string is treated as a cts:word-query of the
specified string.
|
quality-weight | A document quality weight to use when computing scores. The default is 1.0. |
forest-ids | A sequence of IDs of forests to which the search will be constrained. An empty sequence means to search all forests in the database. The default is (). |
This function returns a Sequence of
Value
objects, not native JavaScript values. In contexts
where loose equality is sufficient (e.g. '==' operator),
this distinction is transparent. However, in contexts where strict or
"same value" equality applies (e.g. '===' operator,
Array.prototype.includes
, Array.prototype.indexOf
),
comparison between an item in the Sequence and an equivalent native
value will fail. For details, see
Value Object in the JavaScript Reference Guide.
Only one of "frequency-order" or "item-order" may be specified in the options parameter. If neither "frequency-order" nor "item-order" is specified, then the default is "item-order".
Only one of "fragment-frequency" or "item-frequency" may be specified in the options parameter. If neither "fragment-frequency" nor "item-frequency" is specified, then the default is "fragment-frequency".
Only one of "ascending" or "descending" may be specified in the options parameter. If neither "ascending" nor "descending" is specified, then the default is "ascending" if "item-order" is specified, and "descending" if "frequency-order" is specified.
Only one of "any", "document", "properties", or "locks" may be specified in the options parameter. If none of "any", "document", "properties", or "locks" are specified and there is a $query parameter, then the default is "document". If there is no $query parameter then the default is "any".
Only one of the "score-logtfidf", "score-logtf", "score-simple", "score-random", or "score-zero" options may be specified in the options parameter. If none of "score-logtfidf", "score-logtf", "score-simple", "score-random", or "score-zero" are specified, then the default is "score-logtfidf".
Only one of the "checked" or "unchecked" options may be specified in the options parameter. If neither "checked" nor "unchecked" are specified, then the default is "checked".
If "collation=URI" is not specified in the options parameter, then the default collation is used. If a range index with that collation does not exist, an error is thrown.
If "sample=N" is not specified in the options parameter,
then all included values may be returned. If a $query
parameter
is not present, then "sample=N" has no effect.
If "truncate=N" is not specified in the options parameter,
then values from all fragments selected by the $query
parameter
are included. If a $query
parameter is not present, then
"truncate=N" has no effect.
To incrementally fetch a subset of the values returned by this function,
use
fn.subsequence
on the output, rather than
the "skip" option. The "skip" option is based on fragments matching the
query
parameter (if present), not on values. A fragment
matched by query might contain multiple values or no values.
The number of fragments skipped does not correspond to the number of
values. Also, the skip is applied to the relevance ordered query matches,
not to the ordered values list.
When using the "skip" option, use the "truncate" option rather than the "limit" option to control the number of matching fragments from which to draw values.
If neither "case-sensitive" nor "case-insensitive" is present, $pattern is used to determine case sensitivity. If $pattern contains no uppercase, it specifies "case-insensitive". If $pattern contains uppercase, it specifies "case-sensitive".
If neither "diacritic-sensitive" nor "diacritic-insensitive" is present, $pattern is used to determine diacritic sensitivity. If $pattern contains no diacritics, it specifies "diacritic-insensitive". If $pattern contains diacritics, it specifies "diacritic-sensitive".
// Assuming that there are path namespaces defined with the following prefixes: // my: http://aaa.com // his: http://bbb.com // // Further assuming that a string path index is defined using the // above namespaces, in the codepoint collation, with the following path: // '/my:a[@his:b="B1"]/my:c'. // load documents declareUpdate(); xdmp.documentInsert("/abc1.xml", fn.head(xdmp.unquote( '<my:a his:b="B1" xmlns:my="http://aaa.com" \n\ xmlns:his="http://bbb.com"><my:c>C1</my:c></my:a>'))); xdmp.documentInsert("/abc2.xml", fn.head(xdmp.unquote( '<my:a his:b="B1" xmlns:my="http://aaa.com" \n\ xmlns:his="http://bbb.com"><my:c>C2</my:c></my:a>'))); xdmp.documentInsert("/abc3.xml", fn.head(xdmp.unquote( '<my:a his:b="B1" xmlns:my="http://aaa.com" \n\ xmlns:his="http://bbb.com"><my:c>C3</my:c></my:a>'))); ****** // The following requires the prefix "my" and "his" to be bound // to the "http://aaa.com" and "http://bbb.com" namespaces // in the Group configuration (for example, // Groups => group_name => Namespaces in the Admin Interface). cts.valueMatch(cts.pathReference('/my:a[@his:b="B1"]/my:c'), "?3"); => C3
Stack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.