For our search use case we almost always combine a text query with mailbox, keyword or ACL filters.
As you explained, when every filter can go to the external search engine the results keep relevance order. But when local filters are mixed in, the merge ends up in document id order. This makes the best text match not necessarily first.
Would it be possible for that merge step to keep the order returned by the external engine, and only remove docs that don’t pass the local filters?
What we need is basically:
text-only and mixed-filter searches keep strongest matches first
adding mailbox/keyword/ACL filters does not reorder the remaining hits
equal-score results use some stable secondary order
with collapseThreads, the strongest matching message stays the thread representative
We use Meilisearch, but I guess this would be useful for other external search backends too. We don’t need raw scores or direct search engine access.
mall bump on this. we checked our other search threads and the forum, and couldn’t find anything else covering the mixed-filter ordering case.
this is the part currently blocking our agent search work. i can share a minimal JMAP fixture comparing text-only with text + inMailbox if useful.mall bump on this. we checked our other search threads and the forum, and couldn’t find anything else covering the mixed-filter ordering case.
this is the part currently blocking our agent search work. i can share a minimal JMAP fixture comparing text-only with text + inMailbox if useful.