mirror of
				https://github.com/meilisearch/meilisearch.git
				synced 2025-10-31 07:56:28 +00:00 
			
		
		
		
	[WIP] rebase on main
This commit is contained in:
		| @@ -9,6 +9,7 @@ use serde_json::{Map, Value}; | ||||
| use crate::helpers::EnvSizer; | ||||
| pub use search::{SearchQuery, SearchResult, DEFAULT_SEARCH_LIMIT}; | ||||
| pub use updates::{Facets, Settings, Checked, Unchecked}; | ||||
| use serde::{de::Deserializer, Deserialize}; | ||||
|  | ||||
| mod search; | ||||
| mod updates; | ||||
| @@ -26,6 +27,22 @@ impl Deref for Index { | ||||
|     } | ||||
| } | ||||
|  | ||||
| pub fn deserialize_some<'de, T, D>(deserializer: D) -> Result<Option<T>, D::Error> | ||||
| where | ||||
|     T: Deserialize<'de>, | ||||
|     D: Deserializer<'de>, | ||||
| { | ||||
|     Deserialize::deserialize(deserializer).map(Some) | ||||
| } | ||||
|  | ||||
| pub fn deserialize_wildcard<'de, D>(deserializer: D) -> Result<Option<Option<Vec<String>>>, D::Error> | ||||
| where | ||||
|     D: Deserializer<'de>, | ||||
| { | ||||
|     Ok(<Option<Vec<String>> as Deserialize>::deserialize(deserializer)? | ||||
|         .map(|item: Vec<String>| (!item.iter().any(|s| s == "*")).then(|| item))) | ||||
| } | ||||
|  | ||||
| impl Index { | ||||
|     pub fn settings(&self) -> anyhow::Result<Settings<Checked>> { | ||||
|         let txn = self.read_txn()?; | ||||
| @@ -88,6 +105,8 @@ impl Index { | ||||
|  | ||||
|         let mut documents = Vec::new(); | ||||
|  | ||||
|         println!("fields to display: {:?}", fields_to_display); | ||||
|  | ||||
|         for entry in iter { | ||||
|             let (_id, obkv) = entry?; | ||||
|             let object = obkv_to_json(&fields_to_display, &fields_ids_map, obkv)?; | ||||
|   | ||||
| @@ -5,11 +5,17 @@ use std::marker::PhantomData; | ||||
|  | ||||
| use flate2::read::GzDecoder; | ||||
| use log::info; | ||||
| use milli::update::{IndexDocumentsMethod, UpdateBuilder, UpdateFormat}; | ||||
| use serde::{de::Deserializer, Deserialize, Serialize}; | ||||
| use milli::update::{DocumentAdditionResult, IndexDocumentsMethod, UpdateBuilder, UpdateFormat}; | ||||
| use serde::{Deserialize, Serialize}; | ||||
|  | ||||
| use super::Index; | ||||
| use crate::index_controller::UpdateResult; | ||||
| use super::{deserialize_some, deserialize_wildcard, Index}; | ||||
|  | ||||
| #[derive(Debug, Clone, Serialize, Deserialize)] | ||||
| pub enum UpdateResult { | ||||
|     DocumentsAddition(DocumentAdditionResult), | ||||
|     DocumentDeletion { deleted: u64 }, | ||||
|     Other, | ||||
| } | ||||
|  | ||||
| #[derive(Clone, Default, Debug)] | ||||
| pub struct Checked; | ||||
| @@ -22,14 +28,14 @@ pub struct Unchecked; | ||||
| pub struct Settings<T> { | ||||
|     #[serde( | ||||
|         default, | ||||
|         deserialize_with = "deserialize_some", | ||||
|         deserialize_with = "deserialize_wildcard", | ||||
|         skip_serializing_if = "Option::is_none" | ||||
|     )] | ||||
|     pub displayed_attributes: Option<Option<Vec<String>>>, | ||||
|  | ||||
|     #[serde( | ||||
|         default, | ||||
|         deserialize_with = "deserialize_some", | ||||
|         deserialize_with = "deserialize_wildcard", | ||||
|         skip_serializing_if = "Option::is_none" | ||||
|     )] | ||||
|     pub searchable_attributes: Option<Option<Vec<String>>>, | ||||
| @@ -118,14 +124,6 @@ pub struct Facets { | ||||
|     pub min_level_size: Option<NonZeroUsize>, | ||||
| } | ||||
|  | ||||
| fn deserialize_some<'de, T, D>(deserializer: D) -> Result<Option<T>, D::Error> | ||||
| where | ||||
|     T: Deserialize<'de>, | ||||
|     D: Deserializer<'de>, | ||||
| { | ||||
|     Deserialize::deserialize(deserializer).map(Some) | ||||
| } | ||||
|  | ||||
| impl Index { | ||||
|     pub fn update_documents( | ||||
|         &self, | ||||
|   | ||||
| @@ -19,14 +19,6 @@ use crate::index::Index; | ||||
| use crate::index_controller::uuid_resolver; | ||||
| use crate::{helpers::compression, index::Settings}; | ||||
|  | ||||
| pub (super) fn deserialize_some<'de, T, D>(deserializer: D) -> Result<Option<T>, D::Error> | ||||
| where | ||||
|     T: Deserialize<'de>, | ||||
|     D: Deserializer<'de>, | ||||
| { | ||||
|     Deserialize::deserialize(deserializer).map(Some) | ||||
| } | ||||
|  | ||||
| #[derive(Debug, Serialize, Deserialize, Copy, Clone)] | ||||
| enum DumpVersion { | ||||
|     V1, | ||||
|   | ||||
| @@ -3,6 +3,7 @@ use std::collections::{BTreeMap, BTreeSet}; | ||||
| use log::warn; | ||||
| use serde::{Deserialize, Serialize}; | ||||
| use crate::index_controller; | ||||
| use crate::index::{deserialize_wildcard, deserialize_some}; | ||||
| use super::*; | ||||
|  | ||||
| /// This is the settings used in the last version of meilisearch exporting dump in V1 | ||||
| @@ -13,10 +14,10 @@ struct Settings { | ||||
|     pub ranking_rules: Option<Option<Vec<String>>>, | ||||
|     #[serde(default, deserialize_with = "deserialize_some")] | ||||
|     pub distinct_attribute: Option<Option<String>>, | ||||
|     #[serde(default, deserialize_with = "deserialize_some")] | ||||
|     #[serde(default, deserialize_with = "deserialize_wildcard")] | ||||
|     pub searchable_attributes: Option<Option<Vec<String>>>, | ||||
|     #[serde(default, deserialize_with = "deserialize_some")] | ||||
|     pub displayed_attributes: Option<Option<BTreeSet<String>>>, | ||||
|     #[serde(default, deserialize_with = "deserialize_wildcard")] | ||||
|     pub displayed_attributes: Option<Option<Vec<String>>>, | ||||
|     #[serde(default, deserialize_with = "deserialize_some")] | ||||
|     pub stop_words: Option<Option<BTreeSet<String>>>, | ||||
|     #[serde(default, deserialize_with = "deserialize_some")] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user