* JSON field names in terminal/pager output
@ 2021-01-05 9:56 Eric Wong
2021-01-06 0:00 ` Kyle Meyer
0 siblings, 1 reply; 3+ messages in thread
From: Eric Wong @ 2021-01-05 9:56 UTC (permalink / raw)
To: meta
Are "f", "s", "t", "c" acceptable field names to show in JSON
output? (instead of from/subject/to/cc)
The single-chars have been used in the search queries for as
long as we've had search. And I stole that UI bit from
mairix(1), so there's prior art.
Anyways, the current JSON output looks something like the
following, comments inline
[{
"blob": "d21717dae7e18dbc9efcd5ca57fe2ee92747bc06",
"docid": 41946,
"dt": "2021-01-05T09:24:49Z",
# dt: is not an exact match for current WWW behavior which
# needs YYYYMMDDHHMMSS (all digits). Getting Xapian to parse
# dates from Perl (w/o custom C++) isn't possible, yet.
# dt: is the date header, "UTCDate" in JMAP.
"f": "Eric Wong <e@80x24.org>",
# "from": might be more obvious, but seeing it thousands of
# times every message might be too much
"m": "<20210105092449.GA22853@dcvr>",
# mid/msgid/message-id
"rcvd": "2021-01-05T09:24:49Z",
# IMAP calls this INTERNALDATE, JMAP calls it "receivedAt"
"references": [
"<20210105090437.22801-1-e@80x24.org>",
"<20210105090437.22801-5-e@80x24.org>"
],
# we don't actually support searching on rereference, yet;
# not sure if it's needed since we already do thread # expansion
"relevance": 13,
# relevance is ->get_percent from Xapian
"s": "JSON pretty-printing [was: [4/4] ... (and maybe lei)]",
"t": "meta@public-inbox.org"
# Subject and To: headers
}, {
# Another message, we do "}, {" to save vertical white space
rather than "},\n{"
"blob": "0ee1d7d9ec9b29c1d8f103033ed06e9e48e6ebfe",
"docid": 41930,
# side note: it's probably not worth displaying docid for
# ephemeral search indices like LeiXSearch
"dt": "2021-01-05T09:04:36Z",
"f": "Eric Wong <e@80x24.org>",
"m": "<20210105090437.22801-4-e@80x24.org>",
"rcvd": "2021-01-05T09:04:38Z",
"references": [
"<20210105090437.22801-1-e@80x24.org>"
],
"relevance": 36,
"s": "[PATCH 3/4] lei: use client env as-is, drop daemon-env command",
"t": "meta@public-inbox.org"
}, {
...
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: JSON field names in terminal/pager output
2021-01-05 9:56 JSON field names in terminal/pager output Eric Wong
@ 2021-01-06 0:00 ` Kyle Meyer
2021-01-06 10:27 ` Eric Wong
0 siblings, 1 reply; 3+ messages in thread
From: Kyle Meyer @ 2021-01-06 0:00 UTC (permalink / raw)
To: Eric Wong; +Cc: meta
Eric Wong writes:
> Are "f", "s", "t", "c" acceptable field names to show in JSON
> output? (instead of from/subject/to/cc)
In my view they are, and, as you mention next, I like that they align
with the search prefixes.
> Anyways, the current JSON output looks something like the
> following, comments inline
>
> [{
[...]
Nice.
> "references": [
> "<20210105090437.22801-1-e@80x24.org>",
> "<20210105090437.22801-5-e@80x24.org>"
> ],
>
> # we don't actually support searching on rereference, yet;
> # not sure if it's needed since we already do thread # expansion
Is "thread # expansion" the "num -> tid -> nums" mapping done by Over's
expand_thread()? And, from the CLI, that will be triggered by
`thread|t', right?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: JSON field names in terminal/pager output
2021-01-06 0:00 ` Kyle Meyer
@ 2021-01-06 10:27 ` Eric Wong
0 siblings, 0 replies; 3+ messages in thread
From: Eric Wong @ 2021-01-06 10:27 UTC (permalink / raw)
To: Kyle Meyer; +Cc: meta
Kyle Meyer <kyle@kyleam.com> wrote:
> Eric Wong writes:
>
> > Are "f", "s", "t", "c" acceptable field names to show in JSON
> > output? (instead of from/subject/to/cc)
>
> In my view they are, and, as you mention next, I like that they align
> with the search prefixes.
>
> > Anyways, the current JSON output looks something like the
> > following, comments inline
> >
> > [{
> [...]
>
> Nice.
Btw, I remember there's several JSON streaming formats. I think
"JSONL" aka "NDJSON" aka "LDJSON" is the best for interopability
with tools like jq(1) and will be the default format when stdout
is to a pipe or regular file.
"Concatenated JSON" may be nice for pretty-printing
<RS>-delimited JSON is gross, but there's an RFC behind it...
cf. https://en.wikipedia.org/wiki/JSON_streaming
>
> > "references": [
> > "<20210105090437.22801-1-e@80x24.org>",
> > "<20210105090437.22801-5-e@80x24.org>"
> > ],
> >
> > # we don't actually support searching on rereference, yet;
> > # not sure if it's needed since we already do thread # expansion
>
> Is "thread # expansion" the "num -> tid -> nums" mapping done by Over's
> expand_thread()? And, from the CLI, that will be triggered by
> `thread|t', right?
Yup. It works well for single sources (and even a single
extindex), but not when combinining multiple inboxes/extindices
since THREADID ({tid}) is per-inbox/extindex. So extra dedupe
work needs to be done...
So searching across externals needs to be parallelized. I'm
thinking SOCK_SEQPACKET Unix sockets is ideal for local
externals and hope it's usable in the modern *BSDs.
And SIGPIPE on pager exit needs to get delivered in a timely
fashion, too... (yes, little things like that really bug me :x)
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-01-06 10:27 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-01-05 9:56 JSON field names in terminal/pager output Eric Wong
2021-01-06 0:00 ` Kyle Meyer
2021-01-06 10:27 ` Eric Wong
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 read-only IMAP folder(s) and NNTP newsgroup(s).