mirror of
https://github.com/Syfaro/fuzzysearch.git
synced 2024-11-10 17:02:38 +00:00
Include which hash caused a match in hashes.
This commit is contained in:
parent
904d3290e1
commit
68b8b911d2
@ -203,7 +203,13 @@ pub async fn search_hashes(
|
|||||||
|
|
||||||
rate_limit!(&api_key, &db, image_limit, "image", hashes.len() as i16);
|
rate_limit!(&api_key, &db, image_limit, "image", hashes.len() as i16);
|
||||||
|
|
||||||
let mut results = image_query_sync(pool, tree, hashes.clone(), 10, None);
|
let mut results = image_query_sync(
|
||||||
|
pool,
|
||||||
|
tree,
|
||||||
|
hashes.clone(),
|
||||||
|
opts.distance.unwrap_or(10),
|
||||||
|
None,
|
||||||
|
);
|
||||||
let mut matches = Vec::new();
|
let mut matches = Vec::new();
|
||||||
|
|
||||||
while let Some(r) = results.recv().await {
|
while let Some(r) = results.recv().await {
|
||||||
@ -275,6 +281,7 @@ pub async fn search_file(
|
|||||||
site_info: Some(SiteInfo::FurAffinity(FurAffinityFile {
|
site_info: Some(SiteInfo::FurAffinity(FurAffinityFile {
|
||||||
file_id: row.get("file_id"),
|
file_id: row.get("file_id"),
|
||||||
})),
|
})),
|
||||||
|
searched_hash: None,
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
|
@ -130,7 +130,12 @@ pub fn image_query_sync(
|
|||||||
LIMIT 1
|
LIMIT 1
|
||||||
) tm ON hashes.twitter_id IS NOT NULL
|
) tm ON hashes.twitter_id IS NOT NULL
|
||||||
WHERE hashes.id = $1", &[&item.id]).await;
|
WHERE hashes.id = $1", &[&item.id]).await;
|
||||||
let rows = query.map(|rows| extract_rows(rows, hash.as_deref()).into_iter().collect());
|
let rows = query.map(|rows| {
|
||||||
|
extract_rows(rows, hash.as_deref()).into_iter().map(|mut file| {
|
||||||
|
file.searched_hash = Some(query_hash);
|
||||||
|
file
|
||||||
|
}).collect()
|
||||||
|
});
|
||||||
tx.send(rows).await.unwrap();
|
tx.send(rows).await.unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,9 @@ pub struct File {
|
|||||||
pub hash: Option<i64>,
|
pub hash: Option<i64>,
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub distance: Option<u64>,
|
pub distance: Option<u64>,
|
||||||
|
|
||||||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
pub searched_hash: Option<i64>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
@ -101,4 +104,5 @@ pub struct ErrorMessage {
|
|||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
pub struct HashSearchOpts {
|
pub struct HashSearchOpts {
|
||||||
pub hashes: String,
|
pub hashes: String,
|
||||||
|
pub distance: Option<i64>,
|
||||||
}
|
}
|
||||||
|
@ -109,6 +109,7 @@ pub fn extract_rows<'a>(
|
|||||||
.flatten(),
|
.flatten(),
|
||||||
artists: row.get("artists"),
|
artists: row.get("artists"),
|
||||||
filename: row.get("filename"),
|
filename: row.get("filename"),
|
||||||
|
searched_hash: None,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user