sg

PDF全文検索サーバを実現 ー その3 設定

honyomiの設定

環境

OS: Ubuntu 18.04.1 LTS
Docker: Docker version 18.09.0, build 4d60db4
Honyomi: honyomi 1.5.0

 

設定をどうするかだが。

http://honyomi.nagoya/

によると、dockerを起動するには

~$ sudo docker start my-honyomi
my-honyomi

 

以下を実行すると、コマンドプロンプトが起動する。

~$ sudo docker exec -it my-honyomi /bin/bash

 

ホストのディレクトリをマウントしたいので、色々ネットで調べ者をするがどうしても作成できず。

https://tech.mokelab.com/infra/docker/mount_local.html

によると、「コンテナ作成時に-vオプション」を指定するそうな。

ならば、最初に使ったコマンドをもう一度使えばいいわけだな。

/books/pdf$ sudo docker run --name my-honyomi -v /books/pdf:/pdfs -d -it -p 9295:9295 ongaeshi/honyomi
docker: Error response from daemon: Conflict. The container name "/my-honyomi" is already in use by container "a5a59a6b2e48afb84bb70130ab673d1e240bde5ba085dd2e0b671c11548588eb". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

dockerコンテナのプロセスは走っていないけど、コンテナの作成をやり直すということか。

/books/pdf$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

なんだど。一度runしてしまったものは消さないと行けないということか。removeするもの面倒なので。

/books/pdf$ sudo docker run --name my-honyomi1 -v /books/pdf:/pdfs -d -it -p 9295:9295 ongaeshi/honyomi
d969bee1bd4be9f3ca57c27df28867dd96432d2603daced3e46b63d134691391

なんだかうまく行ったっぽい。

シェルを起動して潜り込み。

/books/pdf$ sudo docker exec -it my-honyomi1 /bin/bash
root@d969bee1bd4b:/# ls
bin dev home lib64 mnt pdfs root sbin sys usr
boot etc lib media opt proc run srv tmp var
root@d969bee1bd4b:/# cd pdfs
root@d969bee1bd4b:/pdfs# ls
(pdfファイルの羅列)

無事にコンテナからホストのディレクトリにアクセスすることに成功した。

次はデータベースを作るぞ。

データベースを初期化する

root@d969bee1bd4b:/# honyomi init
Database already exists in "/root/.honyomi/db/honyomi.db"

もうデータベースが入っているんだと。

中身は
root@d969bee1bd4b:/# honyomi list

入っておりませんでした。

動作を確認するために逐一テスト。

root@d969bee1bd4b:/pdfs# honyomi add /pdfs/books00001.pdf
A 1 books00001 (1588 pages)

時間がかかったが、取り込みに成功したようだ。

root@d969bee1bd4b:~/.honyomi# honyomi search DNA

--- books00001 (1442 page) ---
lmann DM: Ion channels and neurological disease:<< DNA>> based diagnosis is now possible, and ion channe

検索はうまく行った。

では、ウェブインターフェースはどうなんだ。

root@d969bee1bd4b:~/.honyomi# honyomi web
/usr/local/bundle/gems/launchy-2.4.3/lib/launchy/applications/browser.rb:63:in `browser_cmdline': Unable to find a browser command. If this is unexpected, Please rerun with environment variable LAUNCHY_DEBUG=true or the '-d' commandline option and file a bug at https://github.com/copiousfreetime/launchy/issues/new (Launchy::CommandNotFoundError)
from /usr/local/bundle/gems/launchy-2.4.3/lib/launchy/applications/browser.rb:67:in `cmd_and_args'
from /usr/local/bundle/gems/launchy-2.4.3/lib/launchy/applications/browser.rb:78:in `open'
from /usr/local/bundle/gems/launchy-2.4.3/lib/launchy.rb:29:in `open'
from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/core.rb:120:in `block in web'
from /usr/local/bundle/gems/rack-1.6.4/lib/rack/handler/thin.rb:18:in `run'
from /usr/local/bundle/gems/rack-1.6.4/lib/rack/server.rb:286:in `start'
from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/core.rb:118:in `web'
from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/cli.rb:135:in `web'
from /usr/local/bundle/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
from /usr/local/bundle/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/cli.rb:168:in `invoke_command'
from /usr/local/bundle/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
from /usr/local/bundle/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
from /usr/local/bundle/gems/honyomi-1.5.0/bin/honyomi:5:in `<top (required)>'
from /usr/local/bundle/bin/honyomi:23:in `load'
from /usr/local/bundle/bin/honyomi:23:in `<main>

あかん、あかん。

これはコンテナ内にインストールされたウェブブラウザーを起動させるものらしい。

よって、ひとまずホストOSのシェルから、

~$ sudo docker inspect my-honyomi1

として、ipアドレスを取得し、

 "Ports": {
"9295/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "9295"
}
]


 "IPAddress": "172.17.0.2",

ホストOSのウェブブラウザから

htt://172.17.0.2:9295/

にアクセスし動作確認終了!!

yonyomi1へのアクセス方法を確認しておく。

PCの電源をおとして、再起動する。

シェルを起動して、

sudo docker start my-honyomi1

この時点でホストOSからアクセスできるようになる。

sudo docker exec -it my-honyomi1 /bin/bash

これで、dockerのシェルが立ち上がって諸作業を継続でいるわけだ。

大量のPDF取り込み。

予め、ホストOSのテキストでシェルスクリプトを書いておく

#!/bin/sh
honyomi add /pdfs/books00003.pdf
honyomi add /pdfs/books00004.pdf

それをdockerに移してシェルスクリプロを実行すればよい。

大量のPDFリネーム

#!/bin/sh

honyomi edit 2 -t "BRS Behavioral Science (Board Review Series) Barbara Fadem PhD 296p_0781757274"

こんなbashスクリプトを書いて実行させればよい。

ここでエラーが、

root@d969bee1bd4b:/pdfs# bash tmp.sh
/usr/local/bundle/gems/rroonga-5.0.9/lib/groonga/record.rb:476:in `[]=': "\xEF" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
from /usr/local/bundle/gems/rroonga-5.0.9/lib/groonga/record.rb:476:in `[]='
from /usr/local/bundle/gems/rroonga-5.0.9/lib/groonga/record.rb:476:in `method_missing'
from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/database.rb:106:in `change_book'
from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/core.rb:48:in `edit'
from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/cli.rb:82:in `edit'
from /usr/local/bundle/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
from /usr/local/bundle/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/cli.rb:168:in `invoke_command'
from /usr/local/bundle/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
from /usr/local/bundle/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
from /usr/local/bundle/gems/honyomi-1.5.0/bin/honyomi:5:in `<top (required)>'
from /usr/local/bundle/bin/honyomi:23:in `load'
from /usr/local/bundle/bin/honyomi:23:in `<main>'

全くよくわからない。

タイトル内の2バイト文字がだめかもしれないので()を()に置き換えた。あと行末の改行を消去した。

honyomi edit 2 -t "BRS Behavioral Science (Board Review Series) Barbara Fadem PhD 296p_0781757274"
root@d969bee1bd4b:/pdfs# bash tmp.sh
id: 2
title: BRS Behavioral Science (Board Review Series) Barbara Fadem PhD 296p_0781757274
author: 
url: 
path: /pdfs/books00002.pdf
pages: 308
timestamp: 2018-10-21 00:59:52 +0000

うまく行った。
次はどうか。

honyomi edit 3 -t "Bates’ Guide to Physical Examination and History Taking, 10th Edition Lynn S. Bickley MD 992p_0781780586"


/usr/local/bundle/gems/rroonga-5.0.9/lib/groonga/record.rb:476:in `[]=': "\xE2" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
from /usr/local/bundle/gems/rroonga-5.0.9/lib/groonga/record.rb:476:in `[]='
from /usr/local/bundle/gems/rroonga-5.0.9/lib/groonga/record.rb:476:in `method_missing'
from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/database.rb:106:in `change_book'
from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/core.rb:48:in `edit'
from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/cli.rb:82:in `edit'
from /usr/local/bundle/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
from /usr/local/bundle/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/cli.rb:168:in `invoke_command'
from /usr/local/bundle/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
from /usr/local/bundle/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
from /usr/local/bundle/gems/honyomi-1.5.0/bin/honyomi:5:in `<top (required)>'
from /usr/local/bundle/bin/honyomi:23:in `load'
from /usr/local/bundle/bin/honyomi:23:in `<main>'

あかんらしい。

「’」を除去しても、「.」を除去してもだめ、「,」を除去してもだめ。結局全部削除したらうまくいった。

honyomi edit 4 -t “COPD(慢性閉塞性肺疾患)診断と治療のためのガイドライン 161p_4779210801”

だめ。やっぱり2バイト文字はうまく行かない気がするな、、、

かくなるうえはタイトルを無理無理翻訳するか、、、、手動でやってもだるいわけで、google translationを使って一括翻訳

honyomi edit 4 -t "Guidelines for Diagnosis and Treatment of COPD (Chronic Obstructive Pulmonary Disease) 161 p_ 47779210801"

上記ならば何ら問題なし。シェルスクリプトでバッチファイルを作って一括処理してみよう。だめなところはあとで直せば良い。

#!/bin/sh
honyomi edit 5 -t "Essential Cell Biology Original Book Second Edition Bruce Alberts 894p_4524239278"

(中略)
honyomi edit 221 -t "Laboratory Inspection Value Handbook - Thinking about the Influence of Medicines 2nd Edition Satoshi Kimura 327p_4840746168"

というシェルスクリプトを書いて
root@d969bee1bd4b:/pdfs# bash tmp.sh >> log.txt 2>&1

よし来い!、、、ほとんどうまく行った。やっぱり、2バイト文字駄目だったのね。

なんとか、うまく運用できそうです。

ongaeshi様に感謝です。
 


 

メモ

オプション

root@d969bee1bd4b:/# honyomi -h
honyomi 1.5.0

Commands:
honyomi add file1 [file2 ...] # Add pdf files
honyomi edit book_id [options] # Edit book info
honyomi help [COMMAND] # Describe available commands or on...
honyomi image book_id1 [book_id2 ...] # Generate page images (Need pdftoppm)
honyomi init # Create database in ENV['HONYOMI_D...
honyomi list [book_id1 book_id2 ...] # List books
honyomi move old_path new_path # Move the book path
honyomi remove book_id1 [book_id2 ...] # Remove books
honyomi search query # Search pages
honyomi web # Web search interface

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です