Announcements and discussions for Gnus, the GNU Emacs Usenet newsreader
 help / color / mirror / Atom feed
From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: info-gnus-english@gnu.org
Subject: Re: gnus-search-engine set to gnus-search-notmuch and refer threads
Date: Thu, 17 Feb 2022 23:36:09 -0800	[thread overview]
Message-ID: <877d9socd2.fsf@ericabrahamsen.net> (raw)
In-Reply-To: <87a6epqjts.fsf@ericabrahamsen.net>

Eric Abrahamsen <eric@ericabrahamsen.net> writes:

> jao <jao@gnu.org> writes:
>
>> On Thu, Dec 30 2021, Eric Abrahamsen wrote:
>>
>>
>> [...]
>>
>>> Okay, here goes the next try. A few things to note:
>>>
>>> - I realized notmuch already has a "thread:{<sub-query>}" syntax that
>>>   does the double search I was doing in elisp, so now we just use that instead.
>>
>> makes sense.
>>
>>> - In all my testing I couldn't see that having "duplicate=1" on thread
>>>   searches causes any problems, so I've taken it off. Can you please
>>>   doublecheck this? If it's still mucking it up for you, I'll put it
>>>   back in. I wish I really understood what the problem is (I think it
>>>   has to do with notmuch potentially storing the same message in
>>>   multiple locations, using symlinks).
>>
>> hmm, are you sure you've removed it? i can see, after applying your
>> diff, at least for files searches:
>>
>>     (cl-defmethod gnus-search-indexed-search-command ((engine gnus-search-notmuch)
>>     						  (qstring string)
>>     						  query &optional _groups)
>>       ;; Theoretically we could use the GROUPS parameter to pass a
>>       ;; --folder switch to notmuch, but I'm not confident of getting the
>>       ;; format right.
>>       (let ((limit (alist-get 'limit query)))
>>         (with-slots (switches config-file) engine
>>           (append
>>            (list (format "--config=%s" config-file)
>>                  "search"
>>                  "--output=files"
>>                  "--duplicate=1")
>>            (when limit (list (format "--limit=%d" limit)))
>>            switches
>>            (list qstring)))))
>>
>> at any rate, i had already tried searches without it in my patched
>> version and haven't seen any adverse effects.  my understanding is that
>> notmuch is clever enough to detect duplicate messages with different
>> filenames .
>>
>>
>>> - The search result filtration now won't filter on group names if the
>>>   search is a thread search. This should resolve the issue you were
>>>   seeing where "A T" would only search within the group you had searched
>>>   in to begin with. I guess I think that an explicit thread search by
>>>   the user should result in a full scan of the server. We can see if
>>>   that surprises/annoys anyone, though.
>>
>> the behaviour for me is the same as with my previous patch: A T stays in
>> the nnselect group.  a thing to notice is that, in general, there is no
>> single "the group you had searched in to begin width" (pretty often, i
>> do searches accross all my nnml groups, of which i have plenty)... a
>> full scan of the server is, i think, precisely what a notmuch user would
>> expect :) (but i don't know if this is really supposed to work for
>> gnus-search: in general, collecting all messages of a thread will return
>> messages from a list of different gnus groups: should we be able to show
>> all of them in an ephemeral group then?).
>>
>> be it as it may, even with the full original thread belonging to a
>> single nnml group, A T is leaving me in nnselect with only the messages
>> that were already there (i.e., it's not equivalent to A W followed by A
>> T... but then again, maybe it's not supposed to be?)
>
> I can't believe how long this is taking me...
>
> I was confusing myself because there are two separate problems: notmuch
> thread searching was simply broken, and referring a thread from within
> an nnselect group only finds messages already in that select group.
>
> I've pushed a patch that should simply get thread searching into a
> working state (notmuch's "thread{}" syntax turned out to be more
> complicated and less useful than I thought, so I dropped it).
>
> Next, I think it's a reasonable design decision to say that referring a
> thread from within an nnselect group should search that group's
> constituent groups, not the group itself. What I'm seeing is that
> nnselect actually does that (if we're using search for thread-referral,
> it nixes out the group argument and searches the whole original
> server(s)), but then an error is raised later on, when we try to fetch
> the headers (line 656). I can see that all the thread article numbers
> are returned correctly, but then when we get to `gnus-fetch-headers' I
> get an args-out-of-range error, it looks like because we're looking for
> the index of an article number in the original (smaller) list of
> newsgroup headers. This was referring a thread from a summary buffer
> that contained only a single message.
>
> Andy, does that sound familiar?
>
> One other bug I'm not sure what to do with: notmuch only accepts
> message-ids as search terms *without* the angle brackets. If the user is
> using unparsed (raw) queries, presumably they know not to include angle
> brackets. If they're using parsed queries, the parsing process strips
> any brackets out. But if they're using raw queries *and* refer threads,
> nnselect passes in the thread search query with the angle brackets
> (reasonable, since that's how `mail-header-id' and friends return them).
>
> But that causes failure in the subsequent notmuch search. I don't want
> to special-case this, but on the other hand if all other search engines
> are also able to handle the no-brackets case, maybe we could just always
> strip the brackets?

Okay, after some hairy off-list debugging, I believe everything should
be sorted and working okay. Jose, next time you update Emacs, would you
give it a whirl?

Eric



  parent reply	other threads:[~2022-02-18  7:36 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <87lf1k11ed.fsf@onenetbeyond.org>
2021-11-19 19:05 ` jao
2021-12-14 21:41   ` dal-blazej
2021-12-15 17:41     ` Eric Abrahamsen
2021-12-18 23:22       ` dal-blazej
2021-12-21  5:56     ` Andrew Cohen
2021-12-22 20:56       ` Jose A. Ortega Ruiz
2021-12-22 21:16         ` Eric Abrahamsen
2021-12-22 21:19           ` Eric Abrahamsen
2021-12-22 23:01             ` Jose A. Ortega Ruiz
2021-12-23  0:30               ` Eric Abrahamsen
2021-12-23  3:34                 ` Jose A. Ortega Ruiz
2021-12-23 20:55               ` Eric Abrahamsen
2021-12-24  3:08                 ` Jose A. Ortega Ruiz
2021-12-27 21:54                   ` Jose A. Ortega Ruiz
2021-12-30 23:51                     ` Eric Abrahamsen
2021-12-31  0:07                       ` Andrew Cohen
2021-12-31  0:20                         ` Eric Abrahamsen
2021-12-31  0:37                           ` Andrew Cohen
2021-12-31  1:13                             ` Eric Abrahamsen
2021-12-31  2:57                         ` Jose A. Ortega Ruiz
2021-12-31  1:39                       ` jao
2022-02-17 21:11                         ` Eric Abrahamsen
2022-02-18  0:22                           ` Andrew Cohen
2022-02-18  7:36                           ` Eric Abrahamsen [this message]
2022-02-18  1:20 Eric Abrahamsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877d9socd2.fsf@ericabrahamsen.net \
    --to=eric@ericabrahamsen.net \
    --cc=info-gnus-english@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).