#![warn(missing_docs)]
#![allow(clippy::bool_assert_comparison)]
mod default_doc_mapper;
mod doc_mapper;
mod error;
mod query_builder;
mod sort_by;
mod tokenizers;
pub mod tag_pruning;
pub use default_doc_mapper::{
DefaultDocMapper, DefaultDocMapperBuilder, FieldMappingEntry, ModeType, QuickwitJsonOptions,
SortByConfig,
};
pub use doc_mapper::DocMapper;
pub use error::{DocParsingError, QueryParserError};
pub use sort_by::{SortBy, SortByField, SortOrder};
pub use tokenizers::QUICKWIT_TOKENIZER_MANAGER;
pub const SOURCE_FIELD_NAME: &str = "_source";
pub const DYNAMIC_FIELD_NAME: &str = "_dynamic";
#[cfg(any(test, feature = "testsuite"))]
pub fn default_doc_mapper_for_tests() -> DefaultDocMapper {
const JSON_CONFIG_VALUE: &str = r#"
{
"store_source": true,
"default_search_fields": [
"body", "attributes.server", "attributes.server\\.status"
],
"timestamp_field": "timestamp",
"sort_by": {
"field_name": "timestamp",
"order": "desc"
},
"tag_fields": ["owner"],
"field_mappings": [
{
"name": "timestamp",
"type": "i64",
"fast": true
},
{
"name": "body",
"type": "text",
"stored": true
},
{
"name": "response_date",
"type": "i64",
"fast": true
},
{
"name": "response_time",
"type": "f64",
"fast": true
},
{
"name": "response_payload",
"type": "bytes",
"fast": true
},
{
"name": "owner",
"type": "text",
"tokenizer": "raw"
},
{
"name": "properties",
"type": "json"
},
{
"name": "children",
"type": "array<json>"
},
{
"name": "attributes",
"type": "object",
"field_mappings": [
{
"name": "tags",
"type": "array<i64>"
},
{
"name": "server",
"type": "text"
},
{
"name": "server.status",
"type": "array<text>"
},
{
"name": "server.payload",
"type": "array<bytes>"
}
]
}
]
}"#;
serde_json::from_str::<DefaultDocMapper>(JSON_CONFIG_VALUE).unwrap()
}
#[cfg(any(test, feature = "testsuite"))]
pub fn default_config_with_demux_for_tests() -> DefaultDocMapper {
const JSON_CONFIG_VALUE: &str = r#"
{
"store_source": true,
"default_search_fields": [
"body", "tenant_id"
],
"timestamp_field": "timestamp",
"sort_by": {
"field_name": "timestamp",
"order": "desc"
},
"field_mappings": [
{
"name": "timestamp",
"type": "i64",
"fast": true
},
{
"name": "body",
"type": "text",
"stored": true
},
{
"name": "tenant_id",
"type": "u64",
"fast": true
}
]
}"#;
serde_json::from_str::<DefaultDocMapper>(JSON_CONFIG_VALUE).unwrap()
}