History

fast search, readable UI, fix broken group links

Search - query parser: phrases, prefix*, -exclude, OR, from:, subject:, group:, after:/before: date bounds - meta_fts index over subject + from_addr (npm run index:meta) - drop the FTS->messages join from counts (11s -> ~25ms for "unix"); group scope seeks by rowid range instead of joining - highlighted snippets, relevance/newest/oldest sort, timing, clear errors UI - group links with @, spaces, commas no longer 404 (decode route params) - home: hierarchy overview, largest/all views, name filter, sortable columns - group: oldest/newest toggle, scoped search, windowed pager + jump-to-page - message: quote-depth tinting, dimmed signatures, clickable URLs, author/thread links, index link returns to the right page - decode RFC 2047 encoded subjects/authors - fixed table layout (no column overflow), 14px text, mobile layout - keyboard: j/k next/prev, u up, / search; help, 404, error, loading pages

Kris Yotam committed 1 month agomain

Commit c20846c1 parent 4ca247219 files · +2058 −474Browse files

Showing the changes to README.md (1 of 19 files). Show all

Unified · Split

README.md+10−0
@@ -37,6 +37,9 @@ npm run import /path/to/usenet/archive · 36 unmodified lines
3737 # Re-split concatenated blobs (if importing raw Google Groups data)
3838 npx tsx scripts/resplit.ts
3939
40+# Build the subject/author index (after any import; ~25s, safe to re-run)
41+npm run index:meta
42+
4043 # Run dev server
4144 npm run dev
4245
@@ -44,6 +47,12 @@ npm run dev · 1 unmodified line
4447 npm run build && npm start
4548 ```
4649
50+## Search syntax
51+
52+`word`, `"exact phrase"`, `prefix*`, `-exclude`, `a OR b`, `from:pike`, `subject:minix`,
53+`group:comp.os.plan9`, `after:1990`, `before:1992-06`. Sort by best match, newest or oldest.
54+Keyboard: `j`/`k` next/prev, `u` up, `/` search. See `/help`.
55+
4756 ## Schema
4857
4958 ```sql
@@ -66,6 +75,7 @@ CREATE TABLE messages ( · 16 unmodified lines
6675 );
6776
6877 CREATE VIRTUAL TABLE messages_fts USING fts5(body, content='messages', content_rowid='id');
78+CREATE VIRTUAL TABLE meta_fts USING fts5(subject, from_addr, content='messages', content_rowid='id');
6979 ```
7080
7181 ## License