Classify prompt and animation queries earlier
Map prompt-oriented product searches and animation-oriented build searches away from the breaking-news default so source tiering and tiebreakers align with the benchmark topics. Validation: uv run python -m unittest tests.test_query_type
This commit is contained in:
@@ -7,7 +7,7 @@ QueryType = Literal["product", "concept", "opinion", "how_to", "comparison", "br
|
|||||||
|
|
||||||
# Pattern-based classification (no LLM, no external deps)
|
# Pattern-based classification (no LLM, no external deps)
|
||||||
_PRODUCT_PATTERNS = re.compile(
|
_PRODUCT_PATTERNS = re.compile(
|
||||||
r"\b(price|pricing|cost|buy|purchase|deal|discount|subscription|plan|tier|free tier|alternative)\b", re.I
|
r"\b(price|pricing|cost|buy|purchase|deal|discount|subscription|plan|tier|free tier|alternative|prompt|prompts|prompting|template|templates)\b", re.I
|
||||||
)
|
)
|
||||||
_CONCEPT_PATTERNS = re.compile(
|
_CONCEPT_PATTERNS = re.compile(
|
||||||
r"\b(what is|what are|explain|definition|how does|how do|overview|introduction|guide to|primer)\b", re.I
|
r"\b(what is|what are|explain|definition|how does|how do|overview|introduction|guide to|primer)\b", re.I
|
||||||
@@ -16,7 +16,7 @@ _OPINION_PATTERNS = re.compile(
|
|||||||
r"\b(worth it|thoughts on|opinion|review|experience with|recommend|should i|pros and cons|good or bad)\b", re.I
|
r"\b(worth it|thoughts on|opinion|review|experience with|recommend|should i|pros and cons|good or bad)\b", re.I
|
||||||
)
|
)
|
||||||
_HOWTO_PATTERNS = re.compile(
|
_HOWTO_PATTERNS = re.compile(
|
||||||
r"\b(how to|tutorial|step by step|setup|install|configure|deploy|migrate|implement|build a|create a)\b", re.I
|
r"\b(how to|tutorial|step by step|setup|install|configure|deploy|migrate|implement|build a|create a|animation|animations|video workflow|render pipeline)\b", re.I
|
||||||
)
|
)
|
||||||
_COMPARISON_PATTERNS = re.compile(
|
_COMPARISON_PATTERNS = re.compile(
|
||||||
r"\b(vs\.?|versus|compared to|comparison|better than|difference between|switch from)\b", re.I
|
r"\b(vs\.?|versus|compared to|comparison|better than|difference between|switch from)\b", re.I
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ class TestDetectQueryType(unittest.TestCase):
|
|||||||
self.assertEqual(detect_query_type("cursor IDE pricing"), "product")
|
self.assertEqual(detect_query_type("cursor IDE pricing"), "product")
|
||||||
self.assertEqual(detect_query_type("is Claude Pro worth the cost"), "product")
|
self.assertEqual(detect_query_type("is Claude Pro worth the cost"), "product")
|
||||||
self.assertEqual(detect_query_type("best free tier LLM API"), "product")
|
self.assertEqual(detect_query_type("best free tier LLM API"), "product")
|
||||||
|
self.assertEqual(detect_query_type("nano banana pro prompting"), "product")
|
||||||
|
|
||||||
def test_concept_queries(self):
|
def test_concept_queries(self):
|
||||||
self.assertEqual(detect_query_type("what is WebTransport"), "concept")
|
self.assertEqual(detect_query_type("what is WebTransport"), "concept")
|
||||||
@@ -35,6 +36,7 @@ class TestDetectQueryType(unittest.TestCase):
|
|||||||
self.assertEqual(detect_query_type("how to deploy on Vercel"), "how_to")
|
self.assertEqual(detect_query_type("how to deploy on Vercel"), "how_to")
|
||||||
self.assertEqual(detect_query_type("tutorial for building MCP servers"), "how_to")
|
self.assertEqual(detect_query_type("tutorial for building MCP servers"), "how_to")
|
||||||
self.assertEqual(detect_query_type("step by step Kubernetes setup"), "how_to")
|
self.assertEqual(detect_query_type("step by step Kubernetes setup"), "how_to")
|
||||||
|
self.assertEqual(detect_query_type("remotion animations for Claude Code"), "how_to")
|
||||||
|
|
||||||
def test_comparison_queries(self):
|
def test_comparison_queries(self):
|
||||||
self.assertEqual(detect_query_type("cursor vs windsurf"), "comparison")
|
self.assertEqual(detect_query_type("cursor vs windsurf"), "comparison")
|
||||||
|
|||||||
Reference in New Issue
Block a user