NBSearchはMongoDBをバックエンドとして利用します。実際の場面で利用する場合は、Jupyterコンテナとは別にMongoDBコンテナを用意してください。 dockerコマンドでは以下のようにMongoDBコンテナを用意し、Jupyterコンテナに接続してください。
docker run -d --rm --name nbsearch-mongodb mongo
docker run -it --rm --link nbsearch-mongodb:mymongo -e NBSEARCHDB_HOSTNAME=mymongo -p 8888:8888 niicloudoperation/notebook
なお、NBSearchにMongoDBの設定を与えるためには、以下の環境変数を利用することができます。
-e NBSEARCHDB_HOSTNAME=your_mongodb_hostname
, -e NBSEARCHDB_PORT=your_mongodb_port
- MongoDBのホスト名・ポート番号を指定する(default: localhost:27017
)-e NBSEARCHDB_USERNAME=your_mongodb_username
, -e NBSEARCHDB_PASSWORD=your_mongodb_password
- MongoDBの認証用ユーザ名・パスワードを指定する(default: 認証を使用しない)-e NBSEARCHDB_DATABASE=your_database_name
- MongoDBのデータベース名(default: nbsearch
)-e NBSEARCHDB_COLLECTION=your_collection_name
- MongoDBのコレクション名(default: notebooks
)-e NBSEARCHDB_BASE_DIR=your_notebook_home_dir
- 検索対象とするローカルディレクトリ(default: /home/$NB_USER
)-e NBSEARCHDB_MY_SERVER_URL=your_notebook_server_url
- このサーバURL。このサーバにあるNotebookの識別用に使用する(default: http://localhost:8888/
)本イメージは、動作のお試し用にMongoDBを用意しています。このコンテナ中にMongoDBを起動したい場合は、以下のセルを実行します。
In [1]:
%%bash
sed "s,{NB_USER},$NB_USER," /opt/nbsearch/mongod.conf.template > ~/.nbsearch/mongod.conf
/usr/bin/mongod --fork --config ~/.nbsearch/mongod.conf
これで、 localhost:27017
でMongoDBにアクセス可能になります。(データベースファイルは、 ~/.nbsearch/mongodb
に作成されます)。
MongoDBを起動したら、jupyter nbsearch update-index
コマンドを使用して、現在の作業ディレクトリ上にあるNotebookに基づきMongoDB内のコレクションを更新します。(NBSEARCHDB_*
環境変数がデフォルトの時のみ正常動作します)
In [2]:
%%bash
jupyter nbsearch update-index $CONDA_DIR/etc/jupyter/jupyter_notebook_config.py --debug local
今後、作業ディレクトリ上でNotebookの変更が発生した際に、MongoDB内のコレクションを更新したい場合は、以下のセルを実行し、lsyncdプロセスを起動します。
In [3]:
!lsyncd /opt/nbsearch/update-index.lua
上記のようにlsyncdプロセスを起動するか、コンテナ起動時の環境変数にNBSEARCHDB_AUTO_UPDATE=1
を加えることで、
ホームディレクトリ内で作成・変更したNotebookを自動的にNBSearchで検索可能になります。
NBSearch拡張は本イメージではデフォルトでは無効化されています。
NBextensionsタブで、 NBSearch
拡張のチェックを押して有効化してください。
また、検索結果から Notebookの比較
をおこないたい場合は、 LC notebook diff
拡張のチェックをして有効化してください。
NBSearch拡張を有効化後、ブラウザを再読み込みするとNBSearchタブが現れます。ここから、Notebookを検索することができます。
NotebookがどのようなCellを含んでいるかどうかを指定して検索することができます。 Cellに関する条件は複数設定することができます。横方向に+ボタンで追加すると、あるCellが満たすべき条件を追加することができます。また、縦方向に +セル条件を追加 を行うと、独立したCell条件を追加することができます。
In [ ]: