Skip to main content

nbsearch

Datasette based notebook search extension, originally inspired by Simon Willison's Fast Autocomplete Search for Your Website.

Binder

Related: Sketching a datasette powered Jupyter Notebook Search Engine: nbsearch

Installation

pip3 install --upgrade git+https://github.com/ouseful-testing/nbsearch.git

Usage - inside Jupyter notebook environment

This is still very much a work in progress. I think it works in Binder (erm, maybe...)

Installing the extension and restarting the Jupyter server should make a Jupyter proxy served version of the search form available from the New menu.

At the moment, I think you need to create the index explicitly. From the command line:

nbsearch index -p PATH

(From a notebook command cell, prefix with !. Default path is .).

The sqlite db that stores the results is in ~/.nbsearch/notebooks.sqlite.

All notebooks down from PATH will be indexed.

When you have generated an index, launch the nbsearch panel from the notebook homepage New menu.

Usage - from the command line

  • create a database by passing a path to some notebook files, eg:
    • nbsearch index -p "/Users/myuser/Documents/content/notebooks"
  • run the server, eg:
    • nbsearch serve

datasette should start up and display a server port number. (To kill it, I look for process IDs: ps -al |grep datasette; there is probably a better way... It might be nice if CLI kept track of process IDs and let you kill from a selection?)

UI

Old screenshot

A copy button on a code cell lets you copy code from the code cell.

Results are limited in length; the Show all cell button expands the result cell to its full length. The Show previous cell and Show next cell buttons display the full previous / next cell (repeatedly clicking these buttons grab the next next and previous previous cells etc.)

Clicking on the notebook structure visualisation graphic (the pink/blue image: the colours representent cell type and relative length) will collapse / reveal the display of the result block.

Known Issues

The links to notebooks may well be broken in the search results: I need to think about how to index and handle paths in links, particular in proxy server case.

The app requires the latest version of datasette from the repo, not pypi.

The index is not updated ever unless you rerun the indexer, although I've started trying to ponder a filesystem watchdog here. Another possibility my be a Jupyter notebook content manager or post-save hook to update records as the notebook server saves them but this would not catch filesystem operations (dragging new notebooks to a folder, deleting notebooks etc?)

If the sqlite db is updated, I assume by some magic that the datasette server queries over the updated content?

Useful

Quick way to kill datasette processes: ps aux | grep datasette | grep -v grep | awk '{print $2}' | xargs kill

Metadata

Release files for nbsearch 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nbsearch 0.0.4
File Size Uploaded
nbsearch-0.0.4.tar.gz 9.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nbsearch 0.0.4
File Interpreter ABI Platform
nbsearch-0.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 52.0 kB

Release files / nbsearch-0.0.4.tar.gz

Download URL nbsearch-0.0.4.tar.gz
Size 9.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ef480823c919642d83951b3f5490143210c50583bc54c2d6a49dcb56b9693bf8
BLAKE2b-256 checksum
How to use checksums
42168beefae93970a2dc0cbae00509c634c0cc339b6aef7b03f13f72f79d74e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

Release files / nbsearch-0.0.4-py3-none-any.whl

Download URL nbsearch-0.0.4-py3-none-any.whl
Size 43.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c88cbcbacae3036d3368733436419d3eb41575bb4c3234f3d4ca62f65850150f
BLAKE2b-256 checksum
How to use checksums
c78d440fbd1141927b9b8ea4c9accb21fbe77199d51648d57b63bdb699ef863b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

Release history Release notifications | RSS feed

This release

0.0.4 This release

2 release files

0.0.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page