La ricerca nella cronologia guarda ora anche dentro i tuoi documenti

Cercare nella cronologia trovava prima solo i nomi dei file. Da autenticato, ora trova un documento anche in base a ciò che c'è scritto dentro — il campo del nome funziona esattamente come prima, semplicemente non è più l'unico modo per entrare.

Nessuno si ricorda come ha chiamato un file. Si ricorda una frase che c'era scritta, il nome del cliente di cui parlava, o l'unico comando che il runbook conteneva. Il campo in cima alla tua cronologia prima non poteva aiutare in nulla di tutto ciò, perché confrontava solo quello che digitavi con i nomi dei file.

Due ricerche, un solo campo

Digitando, ora accadono due cose insieme. Il filtro per nome funziona dove ha sempre funzionato — nel browser, su ogni riga della pagina, all'istante, sia per le conversioni salvate che per quelle non salvate. E un istante dopo, se sei autenticato, il server risponde con i documenti salvati il cui testo corrisponde, ordinati per quanto bene corrispondono, e quelle righe si aggiungono a quelle già trovate dal nome.

Non devi scegliere tra i due. Una query che è metà nome di file e metà frase ricordata trova entrambi i tipi di riga, e una query che non corrisponde a nulla nel contenuto lascia semplicemente il filtro per nome come era. La richiesta è ritardata (debounced), quindi digitare non genera una richiesta per ogni tasto premuto, e una ricerca che fallisce lascia la lista funzionante invece di sostituirla con un errore.

Da dove viene l'indice

Ogni documento salvato porta un tsvector del suo Markdown, scritto nel momento in cui il documento viene salvato e indicizzato in Postgres. Il confronto avviene con websearch_to_tsquery, quindi la sintassi è quella che ogni campo di ricerca ha già insegnato alle persone: "una frase tra virgolette" per parole in un certo ordine, or tra alternative, un - iniziale per escludere.

È una configurazione volutamente semplice — nessuna radicalizzazione delle parole (stemming) e nessun elenco di parole vuote. Le parole corrispondono come sono state digitate, il che significa che convert non trova converting, e significa anche che nulla di ciò che cerchi viene silenziosamente reinterpretato. Cercare nella fonte Markdown invece che nella pagina resa ha un effetto collaterale che vale la pena conoscere: l'indirizzo di un link, un blocco di codice e un titolo sono tutti testo ricercabile.

Dove non arriva

Una conversione che esiste solo in questo browser non ha una riga nel database, quindi non c'è nulla di indicizzato per essa e continua a corrispondere solo per nome — la conseguenza onesta del fatto che le conversioni restano locali finché non le salvi. Nemmeno i documenti che qualcuno ha condiviso con te sono coperti; il chip che li elenca filtra per nome.

Da uno script la stessa cosa è un solo parametro: GET /api/v1/documents?q=…, oppure tp list --q "…", che restituisce le corrispondenze migliori prima, e tra due equivalenti la più recente prima della più vecchia.

Da leggere: convertire molti file Markdown in blocco, e documentazione che vive nel repository.