Add ListExtractor
This commit is contained in:
@@ -76,7 +76,7 @@ impl DbFtsIndex {
|
||||
doc.add_text(self.schema.get_field("_meta_source")?, item.source_name());
|
||||
doc.add_text(self.schema.get_field("_meta_key")?, key);
|
||||
|
||||
let extractor = PileValue::Extractor(Arc::new(MetaExtractor::new(item)));
|
||||
let extractor = PileValue::ObjectExtractor(Arc::new(MetaExtractor::new(item)));
|
||||
|
||||
let mut empty = true;
|
||||
for name in self.fts_cfg().fields.keys() {
|
||||
@@ -145,6 +145,8 @@ impl DbFtsIndex {
|
||||
loop {
|
||||
val = match val {
|
||||
PileValue::String(x) => return Ok(Some(x.to_string())),
|
||||
PileValue::U64(x) => return Ok(Some(x.to_string())),
|
||||
PileValue::I64(x) => return Ok(Some(x.to_string())),
|
||||
|
||||
#[expect(clippy::unwrap_used)]
|
||||
PileValue::Array(ref mut x) => {
|
||||
@@ -177,7 +179,7 @@ impl DbFtsIndex {
|
||||
continue 'outer;
|
||||
}
|
||||
|
||||
PileValue::Extractor(_) => {
|
||||
PileValue::ObjectExtractor(_) => {
|
||||
trace!(
|
||||
message = "Skipping field, is object",
|
||||
field = field_name.to_string(),
|
||||
@@ -186,6 +188,15 @@ impl DbFtsIndex {
|
||||
continue 'outer;
|
||||
}
|
||||
|
||||
PileValue::ListExtractor(_) => {
|
||||
trace!(
|
||||
message = "Skipping field, is ListExtractor",
|
||||
field = field_name.to_string(),
|
||||
?path,
|
||||
);
|
||||
continue 'outer;
|
||||
}
|
||||
|
||||
PileValue::Blob { .. } => {
|
||||
trace!(
|
||||
message = "Skipping field, is blob",
|
||||
@@ -300,8 +311,11 @@ pub fn apply<'a>(post: &FieldSpecPost, val: &PileValue<'a>) -> Option<PileValue<
|
||||
|
||||
FieldSpecPost::SetCase { case: Case::Lower } => match val {
|
||||
PileValue::Null => return None,
|
||||
PileValue::U64(_) => return None,
|
||||
PileValue::I64(_) => return None,
|
||||
PileValue::Blob { .. } => return None,
|
||||
PileValue::Extractor(_) => return None,
|
||||
PileValue::ObjectExtractor(_) => return None,
|
||||
PileValue::ListExtractor(_) => return None,
|
||||
PileValue::String(x) => PileValue::String(x.to_lowercase().into()),
|
||||
|
||||
PileValue::Array(x) => {
|
||||
@@ -311,8 +325,11 @@ pub fn apply<'a>(post: &FieldSpecPost, val: &PileValue<'a>) -> Option<PileValue<
|
||||
|
||||
FieldSpecPost::SetCase { case: Case::Upper } => match val {
|
||||
PileValue::Null => return None,
|
||||
PileValue::U64(_) => return None,
|
||||
PileValue::I64(_) => return None,
|
||||
PileValue::Blob { .. } => return None,
|
||||
PileValue::Extractor(_) => return None,
|
||||
PileValue::ObjectExtractor(_) => return None,
|
||||
PileValue::ListExtractor(_) => return None,
|
||||
PileValue::String(x) => PileValue::String(x.to_uppercase().into()),
|
||||
|
||||
PileValue::Array(x) => {
|
||||
@@ -322,8 +339,11 @@ pub fn apply<'a>(post: &FieldSpecPost, val: &PileValue<'a>) -> Option<PileValue<
|
||||
|
||||
FieldSpecPost::TrimSuffix { trim_suffix } => match val {
|
||||
PileValue::Null => return None,
|
||||
PileValue::U64(_) => return None,
|
||||
PileValue::I64(_) => return None,
|
||||
PileValue::Blob { .. } => return None,
|
||||
PileValue::Extractor(_) => return None,
|
||||
PileValue::ObjectExtractor(_) => return None,
|
||||
PileValue::ListExtractor(_) => return None,
|
||||
|
||||
PileValue::String(x) => {
|
||||
PileValue::String(x.strip_suffix(trim_suffix).unwrap_or(x).into())
|
||||
@@ -336,8 +356,11 @@ pub fn apply<'a>(post: &FieldSpecPost, val: &PileValue<'a>) -> Option<PileValue<
|
||||
|
||||
FieldSpecPost::TrimPrefix { trim_prefix } => match val {
|
||||
PileValue::Null => return None,
|
||||
PileValue::U64(_) => return None,
|
||||
PileValue::I64(_) => return None,
|
||||
PileValue::Blob { .. } => return None,
|
||||
PileValue::Extractor(_) => return None,
|
||||
PileValue::ObjectExtractor(_) => return None,
|
||||
PileValue::ListExtractor(_) => return None,
|
||||
|
||||
PileValue::String(x) => {
|
||||
PileValue::String(x.strip_prefix(trim_prefix).unwrap_or(x).into())
|
||||
@@ -350,10 +373,14 @@ pub fn apply<'a>(post: &FieldSpecPost, val: &PileValue<'a>) -> Option<PileValue<
|
||||
|
||||
FieldSpecPost::Join { join } => match val {
|
||||
PileValue::Null => return None,
|
||||
PileValue::U64(_) => return None,
|
||||
PileValue::I64(_) => return None,
|
||||
PileValue::Blob { .. } => return None,
|
||||
PileValue::Extractor(_) => return None,
|
||||
PileValue::ObjectExtractor(_) => return None,
|
||||
PileValue::ListExtractor(_) => return None,
|
||||
|
||||
PileValue::String(x) => PileValue::String(x.clone()),
|
||||
|
||||
PileValue::Array(x) => PileValue::String(
|
||||
x.iter()
|
||||
.map(|x| apply(post, x))
|
||||
|
||||
Reference in New Issue
Block a user