Indexed item search provider
The IndexedItemSearchProvider provides the ability to search a large dataset using a statically generated index. This is for example useful for searching buildings in a cesium 3D tileset. We currently have an implementation for indexing and searching 3d-tiles using IndexedItemSearchProvider
.
Read more about the IndexedItemSearchProvider design.
Generating an index for your 3d tileset.
You can use the terriajs-indexer for generating an index for 3d-tiles that is searchable by Terria. You can follow the documentation on the repo to generate the index.
Enabling the index in Terria.
After generating the index, enable it in Terria by configuring a search provider for the catalog item.
Below is sample catalog item configuration:
{
"name": "Buildings 3D",
"type": "3d-tiles",
"url": "/Buildings3D/tileset.json",
"search": {
"providerType": "indexed",
"providerOptions": {
"indexRootUrl": "/Buildings3D-index/indexRoot.json"
},
"resultTemplate": "Building #{{OBJECTID}}"
"parameters": [
{
id: "GEOSCAPE_ROOF_SLOPE",
name: "Roof Slope"
},
{
id: "GEOSCAPE_STREET_ADDRESS",
queryOptions: {
prefix: true,
fuzzy: 2
}
}
]
}
}
You can host the generated index anywhere, the above configuration assumes that you have added it to terriamap/wwwroot
.
Search provider configuration:
search: SearchableItemTraits
providerType: "indexed"
- Required
- A string identifying the search provider in the ItemSearchProviders registry. This should be
"indexed"
forIndexedItemSearchProvider
.
providerOptions: any
- Required
- Options for the indexed item search provider
indexRootUrl: string
- Required
- The URL of
indexRoot.json
file that was generted usingterriajs-indexer
.
-
resultTemplate: string
- Optional
- A Mustache formatted template string used to generate a title text for each result in the search results listing. The columns in
resultsData.csv
can be used as variables in the template string. If not provided, the text defaults to the ID of the feature.
-
parameters: SearchParameterTraits[]
- Optional
- Additional configuration for each search parameter. This is given as an array of
SearchParameterTraits
indexed by the parameter ID. id: string
- Required
- ID of the parameter
name?: string
- Optional
- A human readable name to assign to the parameter which will be shown to the user in the search form instead of the ID.
queryOptions?: any
- Query options to be passed to the index when searching. Currently only
text
parameters acceptqueryOptions
. Fortext
parameterqueryOptions
is expected to be a valid Minisearch Search Options object.
- Query options to be passed to the index when searching. Currently only