pub struct SearchQuery {
pub search_term: NormalizedTermValue,
pub search_terms: Option<Vec<NormalizedTermValue>>,
pub operator: Option<LogicalOperator>,
pub skip: Option<usize>,
pub limit: Option<usize>,
pub role: Option<RoleName>,
pub layer: Layer,
pub include_pinned: bool,
}Expand description
A search query for finding documents in the knowledge graph.
Supports both single-term and multi-term queries with logical operators (AND/OR).
Results can be paginated using skip and limit, and scoped to specific roles.
§Examples
§Single-term query
use terraphim_types::{SearchQuery, NormalizedTermValue, Layer, RoleName};
let query = SearchQuery {
search_term: NormalizedTermValue::from("machine learning"),
search_terms: None,
operator: None,
skip: None,
limit: Some(10),
role: Some(RoleName::new("data_scientist")),
layer: Layer::default(),
include_pinned: false,
};§Multi-term AND query
use terraphim_types::{SearchQuery, NormalizedTermValue, LogicalOperator, RoleName};
let query = SearchQuery::with_terms_and_operator(
NormalizedTermValue::from("rust"),
vec![NormalizedTermValue::from("async"), NormalizedTermValue::from("tokio")],
LogicalOperator::And,
Some(RoleName::new("engineer")),
);
assert!(query.is_multi_term_query());
assert_eq!(query.get_all_terms().len(), 3);Fields§
§search_term: NormalizedTermValuePrimary search term for backward compatibility
search_terms: Option<Vec<NormalizedTermValue>>Multiple search terms for logical operations
operator: Option<LogicalOperator>Logical operator for combining multiple terms (defaults to OR if not specified)
skip: Option<usize>Number of results to skip (for pagination)
limit: Option<usize>Maximum number of results to return
role: Option<RoleName>Role context for this search
layer: LayerOutput layer for controlling result detail (1=minimal, 2=summary, 3=full)
include_pinned: boolInclude pinned KG entries in results even if they don’t match the query
Implementations§
Source§impl SearchQuery
impl SearchQuery
Sourcepub fn get_all_terms(&self) -> Vec<&NormalizedTermValue>
pub fn get_all_terms(&self) -> Vec<&NormalizedTermValue>
Get all search terms (both single and multiple)
Sourcepub fn is_multi_term_query(&self) -> bool
pub fn is_multi_term_query(&self) -> bool
Check if this is a multi-term query with logical operators
Sourcepub fn get_operator(&self) -> LogicalOperator
pub fn get_operator(&self) -> LogicalOperator
Get the effective logical operator (defaults to Or for multi-term queries)
Sourcepub fn with_terms_and_operator(
primary_term: NormalizedTermValue,
additional_terms: Vec<NormalizedTermValue>,
operator: LogicalOperator,
role: Option<RoleName>,
) -> Self
pub fn with_terms_and_operator( primary_term: NormalizedTermValue, additional_terms: Vec<NormalizedTermValue>, operator: LogicalOperator, role: Option<RoleName>, ) -> Self
Create a new SearchQuery with multiple terms and an operator
Trait Implementations§
Source§impl Clone for SearchQuery
impl Clone for SearchQuery
Source§fn clone(&self) -> SearchQuery
fn clone(&self) -> SearchQuery
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more