Basic text search index fields
The bts index indexes searchable data in fields.
When you index unstructured text, each value is indexed in a default
field called contents
. You do not need to specify
the default field in the bts_contains() search
predicate. When you create an index that has multiple fields because
it is a structured or a composite index, you might need to include
a field name to modify the search string in the bts_contains() search
predicate.
- fieldname
- The name of the field that is indexed.
- JSONpath
- If the json_path_processing index parameter is enabled, you can include the path before the field name. Separate each part of the path with a period.
- XMLpath
- If the xml_path_processing index parameter is enabled, you can include the path before the field name. Separate each part of the path with a forward slash.
- XMLnamespace
- If the include_namespaces index parameter is enabled, you can include an XML namespace before the field name. Escape the colon in the namespace with a back slash.
If you
create a composite index on multiple columns, by default the text
from the indexed columns is concatenated into one string and indexed
in the contents
field. To index the text in each
column included in the index under a field of the same name, include
the query_default_field="*" index parameter in
the index definition. When you query on a composite index that has
multiple fields, you must specify the field name in the bts_contains() search
predicate.
Searches on structured JSON or XML indexes
When you index structured text by setting XML or JSON index parameters, the names for the XML tags or JSON field names are indexed in separate fields and you must specify those fields in the bts_contains() search predicate.
If you specify a list of XML tags or JSON field names to be indexed with the xmltags or json_names index parameter, the default field is the first field in the field list. You must specify the field name for any other field in the bts_contains() search predicate. However, you can override the default field by setting the query_default_field index parameter to a specific field name to use as the default field.
If you enable the all_xmltags or all_json_names index parameter, there is no default field. You must specify each field name in the bts_contains() search predicate.
Examples: JSON or BSON documents
For these examples, the following JSON document is indexed as field name-value pairs with paths by enabling the all_json_names and json_path_processing index parameters:
{ person : {
givenname : Jim
}
given name
field,
you can use either of the following search predicates: bts_contains(column, ' givenname:Jim ')
bts_contains(column, ' givenname:"Jim" ')
person:given
name
field, you can use the following search predicate:bts_contains(column, ' person.givenname:"Jim" ')
Examples: XML documents
fruit
,
you can use the following search predicates: bts_contains(column, ' fruit:Orange ')
bts_contains(column, ' fruit:"Orange Juice" ')
/fruit/citrus
,
you can use the following search predicate:bts_contains(column, ' /fruit/citrus:"Orange Juice" ')
fruit
namespace:bts_contains(column, ' fruit\:citrus:Orange ')