manticoresearch 2.0.0

Сlient for Manticore Search.
Documentation
/*
 * Manticore Search Client
 *
 * Сlient for Manticore Search. 
 *
 * The version of the OpenAPI document: 5.0.0
 * Contact: info@manticoresearch.com
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// SearchRequest : Request object for search operation
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct SearchRequest {
    /// The table to perform the search on
    #[serde(rename = "table")]
    pub table: String,
    #[serde(rename = "query", skip_serializing_if = "Option::is_none")]
    pub query: Option<Box<models::SearchQuery>>,
    /// Join clause to combine search data from multiple tables
    #[serde(rename = "join", skip_serializing_if = "Option::is_none")]
    pub join: Option<Vec<models::Join>>,
    #[serde(rename = "highlight", skip_serializing_if = "Option::is_none")]
    pub highlight: Option<Box<models::Highlight>>,
    /// Maximum number of results to return
    #[serde(rename = "limit", skip_serializing_if = "Option::is_none")]
    pub limit: Option<i32>,
    #[serde(rename = "knn", skip_serializing_if = "Option::is_none")]
    pub knn: Option<Box<models::Knn>>,
    /// Defines aggregation settings for grouping results
    #[serde(rename = "aggs", skip_serializing_if = "Option::is_none")]
    pub aggs: Option<std::collections::HashMap<String, models::Aggregation>>,
    /// Expressions to calculate additional values for the result
    #[serde(rename = "expressions", skip_serializing_if = "Option::is_none")]
    pub expressions: Option<std::collections::HashMap<String, String>>,
    /// Maximum number of matches allowed in the result
    #[serde(rename = "max_matches", skip_serializing_if = "Option::is_none")]
    pub max_matches: Option<i32>,
    /// Starting point for pagination of the result
    #[serde(rename = "offset", skip_serializing_if = "Option::is_none")]
    pub offset: Option<i32>,
    /// Additional search options
    #[serde(rename = "options", skip_serializing_if = "Option::is_none")]
    pub options: Option<serde_json::Value>,
    /// Enable or disable profiling of the search request
    #[serde(rename = "profile", skip_serializing_if = "Option::is_none")]
    pub profile: Option<bool>,
    #[serde(rename = "sort", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub sort: Option<Option<serde_json::Value>>,
    #[serde(rename = "_source", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub _source: Option<Option<serde_json::Value>>,
    /// Enable or disable result weight calculation used for sorting
    #[serde(rename = "track_scores", skip_serializing_if = "Option::is_none")]
    pub track_scores: Option<bool>,
}

impl SearchRequest {
    /// Request object for search operation
    pub fn new(table: String) -> SearchRequest {
        SearchRequest {
            table,
            query: None,
            join: None,
            highlight: None,
            limit: None,
            knn: None,
            aggs: None,
            expressions: None,
            max_matches: None,
            offset: None,
            options: None,
            profile: None,
            sort: None,
            _source: None,
            track_scores: None,
        }
    }
}