Skip to content
getgeolens.com

Search & Discovery

The catalog is the front door to GeoLens. Every dataset you can see is reachable from search, and every search is reusable: filters drive a URL you can copy or save, the results page is the same regardless of role, and the bbox map is always live. This page walks through how to search effectively — keyword, faceted, semantic, and saved — so you can find what you need in a few keystrokes.

GeoLens search is a single search box backed by three modes layered on the same catalog index:

  • Keyword search — matches dataset title, description, tags, attribution, and the contents of metadata fields. Default mode; runs on every keystroke.
  • Faceted search — combines structured filters (tags, geometry type, bounding box, license, owner, custom fields) with the keyword query.
  • Semantic search — when your administrator has enabled it, search runs against vector embeddings of dataset titles and descriptions, so a query like “rainfall over the Pacific Northwest” finds a dataset titled “WA precipitation monthly normals” even without keyword overlap.

The result set is the same shape in every mode: a paginated list of catalog records ordered by relevance. The URL fully captures your filter state, so you can paste a search link into chat or bookmark a query you run weekly.

The left filter rail is where structured filters live. As you toggle filters, the result count next to each facet updates in place.

The most useful filters for narrowing a large catalog:

  • Tags — the canonical taxonomy your team uses. Tag filters AND together by default (a dataset must have all selected tags) and OR within a single tag group when you’re using a custom field.
  • Geometry type — restrict to Point, LineString, Polygon, MultiPolygon, or raster. Useful when you know the layer type you need, e.g. finding only the road centerlines and not the road buffers.
  • Bounding box — drag a box on the inset map. The bbox is intersected against each dataset’s spatial extent; only datasets whose extent overlaps the box appear. The bbox is stored as four floats in the URL, so it’s reproducible.
  • License — filter by license slug (CC-BY-4.0, ODbL-1.0, public-domain, cc0-1.0, etc.). Useful before exporting to an external system that requires attribution.
  • Owner — limit to datasets you uploaded, or to a specific team member’s uploads.
  • Custom fields — administrators can add custom metadata fields (e.g., “Theme”, “Funding source”, “Update cadence”). These appear as additional facets in the rail when populated.

Filters compose: each filter narrows the result set further. The active filter chips appear above the result list, and clicking the X on a chip removes that filter without clearing the rest. To clear everything at once, use the Reset link at the top of the rail.

Faceted search is the combination of one or more filters with the keyword query. The result count badge by each facet shows how many datasets you’d see if you also enabled that facet — a “would-be” count, computed against the current search context, so you can preview the impact of a refinement.

For example, with the query roads and the Polygon geometry type already selected, the Tags facet might show:

  • transportation (12)
  • infrastructure (8)
  • urban (3)

Each number is the count of polygon datasets matching roads that also carry that tag. Clicking transportation re-runs the search with that filter added.

Every facet selection is captured in the URL — query string parameters like ?q=roads&geometry_type=Polygon&tags=transportation. This means:

  • You can bookmark a refined search and return to the same results on demand.
  • Sharing a search link with a colleague delivers the exact filter context they need to see what you’re seeing.
  • Browser back/forward navigates through filter changes the way you’d expect.

Tag-based and bbox-based filters live in the URL too. The bbox is stored as ?bbox=west,south,east,north (four decimal floats, EPSG:4326).

Semantic search is an admin-toggled feature. When enabled, the search bar gains a small toggle (or runs by default — your admin decides) that switches the underlying matching algorithm from keyword to vector similarity.

When semantic search is on, GeoLens compares your query against pre-computed vector embeddings of every dataset’s title and description. The match is based on conceptual similarity, not literal token overlap, so:

  • A query like urban tree canopy may surface a dataset titled “MTL park-area green-cover survey 2023” even though no shared keywords appear.
  • A query like water quality sampling sites will favor datasets about monitoring stations even if those datasets don’t include the exact phrase.

The default similarity threshold is 0.5 — anything below that score is filtered out. Results are still ordered by relevance, but relevance is now embedding similarity rather than keyword frequency.

  • Keyword is faster and more precise when you know the dataset name or a unique attribute value. Use this for everyday lookups.
  • Faceted is best when you have a structural constraint (geometry type, tag, bbox) but don’t know the exact dataset name.
  • Semantic shines when you describe what you need in natural language and aren’t sure what naming conventions your team uses. Try it when keyword search returns nothing, or when you’re exploring an unfamiliar catalog.

A saved search is a named, reusable search definition. Once saved, it appears in your sidebar under My Searches and re-runs against the live catalog every time you open it — so a saved search for geometry_type=Polygon AND tags=hydrology AND license=CC-BY-4.0 always returns the current matching set, not a frozen snapshot.

To save a search:

  1. Run the search you want to preserve (filters, query, bbox — whatever you’ve set up).
  2. Click Save search above the results list.
  3. Give it a name (e.g., “Quarterly water-quality review”) and an optional description.
  4. Choose visibility — private (just you) or shared (anyone in your organization who can see the underlying datasets).

Saved searches differ from collections in two important ways:

  • A saved search is a query — its membership changes as new datasets are added that match the criteria. If you save tags=hydrology and a new hydrology dataset is uploaded next month, it’s automatically in your saved search.
  • A collection is an explicit list — it contains exactly the datasets you added by hand, regardless of any catalog changes.

Use saved searches when the criteria matter; use collections when the specific datasets matter. See Collections for the explicit-membership alternative.

Saved searches appear in the sidebar under My Searches. Click any entry to re-run it. Use the kebab menu on a saved search to edit its name/description, update its query (after refining it in the search bar), or delete it.

The same catalog is available over OGC API Records — useful for clients that need to drive search programmatically (a dashboard, a scheduled job, a custom integration). Every filter you set in the UI has an equivalent CQL2 expression in the API.

For the full machine-client reference, see OGC API & Standards Endpoints — it covers list, filter, bbox, and CQL2 against /api/collections/datasets/items. The OGC API Records endpoint is the canonical way to mirror the catalog into another tool, run a nightly drift report, or build a custom search front-end.

  • Empty results? Check the filter chips above the result list — a stale bbox or a forgotten tag is the usual culprit. Click Reset to clear all filters and start over.
  • Wrong geometry? Some datasets have mixed geometry; the geometry-type filter matches the dataset’s primary geometry only. To find datasets with any of multiple types, leave the filter off and use the result list’s geometry-type column.
  • Performance on large catalogs. Keyword search returns within a few hundred milliseconds even at hundreds of thousands of records — the bottleneck is usually the initial dataset list render, not the search itself. If you’re consistently slow, ask your admin to check SEARCH_RESULT_PAGE_SIZE and the catalog index size.
  • Semantic search and tags. Semantic search ignores tags by design — it matches on title and description text. To combine semantic relevance with a structural constraint, run the semantic search first, then narrow with the filter rail.