diff --git a/src/api/search.rs b/src/api/search.rs index 7a617de..051d9ce 100644 --- a/src/api/search.rs +++ b/src/api/search.rs @@ -967,6 +967,10 @@ fn extract_image_filename_from_content(content: &str) -> Option { 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(描述)。 async fn enrich_image_search_results( pool: &SqlitePool, mut results: Vec, @@ -990,8 +994,9 @@ async fn enrich_image_search_results( let original_content = result.content.clone(); result.image_filename = Some(filename.clone()); result.descprition = Some(original_content); + let lookup_filename = image_description_lookup_filename(&filename); let (description, jpg_filename) = descriptions - .get(&(result.file_id, filename.clone())) + .get(&(result.file_id, lookup_filename.to_string())) .cloned() .unwrap_or_else(|| (String::new(), None)); if !description.is_empty() { @@ -1000,13 +1005,7 @@ async fn enrich_image_search_results( let jpg_filename = jpg_filename.unwrap_or(filename); result.jpg_filename = Some(jpg_filename.clone()); let source_filename = result.file.as_ref().map(|file| file.filename.as_str()).unwrap_or_default(); - let kb_id = result - .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); + result.content = format!("{}_{}", source_filename, jpg_filename); } Ok(results) diff --git a/todo.md b/todo.md index fdf0ed9..996240f 100644 --- a/todo.md +++ b/todo.md @@ -1,3 +1,32 @@ 文档:122-06A0014-B01001_发动机-维修手册.pdf 搜索:保养主推进柴油机的步骤 搜索方式:高级搜索 +curl -X 'GET' \ + 'http://localhost:3000/api/v1/knowledge/search/image-by-text?query=%E5%9B%BE%203.2%20%E8%88%B9%E8%88%B6%E4%B8%BB%E5%8F%91%E5%8A%A8%E6%9C%BA%E7%BB%84%E6%88%90%E5%9B%BE.jpg' \ + -H 'accept: application/json' \ + -H 'x-user-id: 1' \ + -H 'x-user-name: testuser' \ + -H 'x-role: admin'服务有个问题,当我调用问搜图检索接口时,输出如下:{ + "results": [ + { + "id": 11, + "file_id": 2, + "content": "163-06A0015-B01001_发动机-维修手册.pdf/8/images/ae9bcbc029d318bd8189bbb9c67cd730ea4c950b1e383ed8454834040d7d16ae.jpg", + "score": 0.98560935, + "file": { + "id": 2, + "filename": "163-06A0015-B01001_发动机-维修手册.pdf", + "kb_id": 8, + "is_public": false, + "user_id": "user1", + "created_at": 1784875238 + }, + "kb": { + "id": 8, + "name": "测试0724", + "is_public": false, + "user_id": "user1" + }, + "image_filename": "images/ae9bcbc029d318bd8189bbb9c67cd730ea4c950b1e383ed8454834040d7d16ae.jpg", + "jpg_filename": "images/ae9bcbc029d318bd8189bbb9c67cd730ea4c950b1e383ed8454834040d7d16ae.jpg",}] + 首先jpg_filename返回的字段值不对,数据库中已经是图 3.2 船舶主发动机组成图.jpg,但这里仍然是和image_filename一样的值,同时content返回的内容需要修改,应该为:filename_jpg_filename,例如:163-06A0015-B01001_发动机-维修手册.pdf_图 3.2 船舶主发动机组成图.jpg \ No newline at end of file