From c059b4a39ae6c09966b1484db1300eb054e6525e Mon Sep 17 00:00:00 2001 From: evazion Date: Sat, 25 Jun 2022 21:38:46 -0500 Subject: [PATCH] ai tags: add ability to filter by confidence in post searches. Allow searching for e.g. `ai:solo,>=90%` to to find posts that have the solo tag with >=90% confidence. The default confidence level is 50%. The delimiter is a comma because it's one of the few characters not allowed in tag names. --- app/models/post.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/models/post.rb b/app/models/post.rb index 94a8b9fa6..3f265a857 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -1307,11 +1307,14 @@ class Post < ApplicationRecord where(md5: metadata.select(:md5)) end - def ai_tags_include(value) - tag = Tag.find_by_name_or_alias(value) + def ai_tags_include(value, default_confidence: ">=50") + name, confidence = value.split(",") + confidence = (confidence || default_confidence).to_s.delete("%") + + tag = Tag.find_by_name_or_alias(name) return none if tag.nil? - ai_tags = AITag.joins(:media_asset).where(tag: tag, score: (50..)) + ai_tags = AITag.joins(:media_asset).where(tag: tag).where_numeric_matches(:score, confidence) where(ai_tags.where("media_assets.md5 = posts.md5").arel.exists) end