From 7c90b6b414f9881e67df5709ceae31f50671c1e4 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Tue, 7 Jan 2025 15:18:05 +0100 Subject: [PATCH] (query) Don't blindly make tokens containing a colon into a non-ranking advice term --- .../searchquery/query_parser/QueryParser.java | 12 +++++++++++- .../nu/marginalia/query/svc/QueryFactoryTest.java | 6 ++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/code/functions/search-query/java/nu/marginalia/functions/searchquery/query_parser/QueryParser.java b/code/functions/search-query/java/nu/marginalia/functions/searchquery/query_parser/QueryParser.java index 7133b87a..b87b1193 100644 --- a/code/functions/search-query/java/nu/marginalia/functions/searchquery/query_parser/QueryParser.java +++ b/code/functions/search-query/java/nu/marginalia/functions/searchquery/query_parser/QueryParser.java @@ -233,9 +233,19 @@ public class QueryParser { entity.replace(new QueryToken.RankTerm(limit, str)); } else if (str.startsWith("qs=")) { entity.replace(new QueryToken.QsTerm(str.substring(3))); - } else if (str.contains(":")) { + } else if (str.startsWith("site:") + || str.startsWith("format:") + || str.startsWith("file:") + || str.startsWith("tld:") + || str.startsWith("ip:") + || str.startsWith("as:") + || str.startsWith("asn:") + || str.startsWith("generator:") + ) + { entity.replace(new QueryToken.AdviceTerm(str, t.displayStr())); } + } private static SpecificationLimit parseSpecificationLimit(String str) { diff --git a/code/functions/search-query/test/nu/marginalia/query/svc/QueryFactoryTest.java b/code/functions/search-query/test/nu/marginalia/query/svc/QueryFactoryTest.java index 26a9928d..7bbcdfb7 100644 --- a/code/functions/search-query/test/nu/marginalia/query/svc/QueryFactoryTest.java +++ b/code/functions/search-query/test/nu/marginalia/query/svc/QueryFactoryTest.java @@ -208,6 +208,12 @@ public class QueryFactoryTest { System.out.println(subquery); } + @Test + public void testCplusPlus() { + var subquery = parseAndGetSpecs("std::vector::push_back vector"); + System.out.println(subquery); + } + @Test public void testQuotedApostrophe() { var subquery = parseAndGetSpecs("\"bob's cars\"");