search_terms
Search VFB terms. This is the search virtualflybrain.org itself runs — the same Solr query, the same ranking — so what comes back first here is what a user would see first on the site.
USE filter_types BY DEFAULT. Unfiltered searches mix scRNAseq artifacts and developmental stages in with the entity the user wants.
Common filter_types recipes:
Neuron classes: ["neuron", "class"]
Individual neurons with images: ["neuron", "has_image"]
Neurons with connectome data: ["neuron", "has_neuron_connectivity"]
Brain regions / neuropils: ["anatomy"]
Genes: ["gene"]
Driver lines / expression patterns: ["expression_pattern"]
Datasets: ["dataset"]
There are over 200 type names and they change as data is added, so do NOT guess them: call list_search_facets to see the current vocabulary (optionally filtered, e.g. contains="lineage"). Names are matched case- and separator-insensitively, and a name that does not exist is an error with suggestions rather than a silently empty result.
Deprecated terms are excluded by the search itself — you do not need exclude_types: ["deprecated"], and adding it is harmless but pointless.
Stage filtering: VFB covers adult, larval, and embryonic data, and many anatomical FBbt classes are stage-agnostic. Do NOT add "adult" or "larva" to filter_types by default — only add them when the user is explicit about a stage (e.g. "adult Kenyon cells", "larval mushroom body"). Default searches should leave stage out so stage-agnostic classes and all life stages are visible.
Useful flags:
unique=true (the default) → one row per term. Turn it OFF only when you need to see WHICH synonym matched; with unique=false a term appears once per matching synonym, so "Kenyon cell" can return the same ID several times.
minimize_results=true → top 10, essential fields only, for exploratory searches.
auto_fetch_term_info=true → if an exact label match is found, returns get_term_info in the same response.
boost_types=["has_image", "has_neuron_connectivity"] → float data-rich entities to the top of the list without excluding anything else.
demote_types=["expression_pattern_fragment"] → sink noisy types to the bottom of the list instead of removing them.
If the search returns no good matches, do NOT fall back to training-data answers — try alternative spellings, synonyms, broader terms, or different filter_types.
Multiple filter_types are ANDed (results must match ALL). Multiple exclude_types are ORed (any match excludes). boost_types and demote_types re-order without excluding; boost wins if a term matches both.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | Number of results to return (default 150, max 1000) - use smaller numbers for focused searches | |
| query | Yes | Search query (e.g., medulla) | |
| start | No | Pagination start index (default 0) - use to get results beyond the first page | |
| unique | No | One row per term (default true). Set false to get a row per matching synonym, which shows WHICH name matched at the cost of repeating IDs. | |
| boost_types | No | Float results matching these facets_annotation types to the top of the ranked list without excluding others | |
| demote_types | No | Sink results matching these facets_annotation types to the bottom of the ranked list without excluding them. Ignored for a type that also appears in boost_types. | |
| filter_types | No | Filter results to only include items matching ALL of these facets_annotation types (AND logic). Use list_search_facets for valid names. | |
| exclude_types | No | Exclude results matching ANY of these facets_annotation types (OR logic). Deprecated terms are already excluded. | |
| minimize_results | No | When true, return at most 10 results with only the essential fields. For exact matches, return only the matching result. | |
| auto_fetch_term_info | No | When true and an exact label match is found, automatically fetch and include term info in the response. |