sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 95f44f6753f03acf72d0e23e6673d62703692719
parent 6b8654e53bcbd31c5e2777459d3a9e74413b8845
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date:   Mon, 10 Dec 2007 03:43:55 +0000

add clause limit in searches

git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@759 5c8cc53c-5e98-4d25-b20a-d8db53a31250

Diffstat:
M lib/sup/index.rb | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/lib/sup/index.rb b/lib/sup/index.rb
@@ -236,6 +236,7 @@ EOS
   ## true, stops loading any thread if a message with a :killed flag
   ## is found.
   SAME_SUBJECT_DATE_LIMIT = 7
+  MAX_CLAUSES = 1000
   def each_message_in_thread_for m, opts={}
     #Redwood::log "Building thread for #{m.id}: #{m.subj}"
     messages = {}
@@ -264,13 +265,16 @@ EOS
 
     until pending.empty? || (opts[:limit] && messages.size >= opts[:limit])
       q = Ferret::Search::BooleanQuery.new true
+      # this disappeared in newer ferrets... wtf.
+      # q.max_clause_count = 2048
 
-      pending.each do |id|
+      lim = [MAX_CLAUSES / 2, pending.length].min
+      pending[0 ... lim].each do |id|
         searched[id] = true
         q.add_query Ferret::Search::TermQuery.new(:message_id, id), :should
         q.add_query Ferret::Search::TermQuery.new(:refs, id), :should
       end
-      pending = []
+      pending = pending[lim .. -1]
 
       q = build_query :qobj => q