更新 src/api/search.rs
All checks were successful
CI / Frontend (Vite) (push) Successful in 48s
CI / Docker Release Tar (push) Has been skipped
CI / Backend (Rust) (push) Successful in 10m25s

问搜图接口优化,修改content字段返回内容
This commit is contained in:
Defeng 2026-07-24 16:11:27 +08:00
parent 1a7ea2beb5
commit c5c38950c1

View File

@ -967,6 +967,10 @@ fn extract_image_filename_from_content(content: &str) -> Option<String> {
IMAGE_REF_RE.captures(content)?.get(1).map(|m| m.as_str().to_string()) IMAGE_REF_RE.captures(content)?.get(1).map(|m| m.as_str().to_string())
} }
fn image_description_lookup_filename(image_filename: &str) -> &str {
image_filename.strip_prefix("images/").unwrap_or(image_filename)
}
/// 为图片相关搜索结果补充图片名称和 split_image 返回的 image_content描述 /// 为图片相关搜索结果补充图片名称和 split_image 返回的 image_content描述
async fn enrich_image_search_results( async fn enrich_image_search_results(
pool: &SqlitePool, mut results: Vec<SearchResultItem>, pool: &SqlitePool, mut results: Vec<SearchResultItem>,
@ -990,8 +994,9 @@ async fn enrich_image_search_results(
let original_content = result.content.clone(); let original_content = result.content.clone();
result.image_filename = Some(filename.clone()); result.image_filename = Some(filename.clone());
result.descprition = Some(original_content); result.descprition = Some(original_content);
let lookup_filename = image_description_lookup_filename(&filename);
let (description, jpg_filename) = descriptions let (description, jpg_filename) = descriptions
.get(&(result.file_id, filename.clone())) .get(&(result.file_id, lookup_filename.to_string()))
.cloned() .cloned()
.unwrap_or_else(|| (String::new(), None)); .unwrap_or_else(|| (String::new(), None));
if !description.is_empty() { if !description.is_empty() {
@ -1000,13 +1005,7 @@ async fn enrich_image_search_results(
let jpg_filename = jpg_filename.unwrap_or(filename); let jpg_filename = jpg_filename.unwrap_or(filename);
result.jpg_filename = Some(jpg_filename.clone()); result.jpg_filename = Some(jpg_filename.clone());
let source_filename = result.file.as_ref().map(|file| file.filename.as_str()).unwrap_or_default(); let source_filename = result.file.as_ref().map(|file| file.filename.as_str()).unwrap_or_default();
let kb_id = result result.content = format!("{}_{}", source_filename, jpg_filename);
.file
.as_ref()
.and_then(|file| file.kb_id)
.map(|id| id.to_string())
.unwrap_or_else(|| "null".to_string());
result.content = format!("{}/{}/{}", source_filename, kb_id, jpg_filename);
} }
Ok(results) Ok(results)