Explorar o código

Add query rule to include user thread replies

Zed %!s(int64=6) %!d(string=hai) anos
pai
achega
8a2f4f63a3
Modificáronse 1 ficheiros con 10 adicións e 1 borrados
  1. 10 1
      src/query.nim

+ 10 - 1
src/query.nim

@@ -55,14 +55,23 @@ proc genQueryParam*(query: Query): string =
   if query.kind == users:
     return query.text
 
+  # improve no-replies result only when searching for less than 7
+  # otherwise multi-timeline limit goes down to 8 users
+  let rewriteReplies = "replies" in query.excludes and query.fromUser.len < 7
+
   for i, user in query.fromUser:
-    param &= &"from:{user} "
+    if rewriteReplies:
+      param &= &"(from:{user} AND (to:{user} OR -filter:replies)) "
+    else:
+      param &= &"from:{user} "
+
     if i < query.fromUser.high:
       param &= "OR "
 
   for f in query.filters:
     filters.add "filter:" & f
   for e in query.excludes:
+    if rewriteReplies and e == "replies": continue
     filters.add "-filter:" & e
   for i in query.includes:
     filters.add "include:" & i