« WSLでJupyter Labを使う&ショートカット・アイコンから実行する | トップページ | ScrapBook及びSave Page WEで保存したWebページをApache Solrで検索できるようにしてみた(その2) »

2020.05.14

ScrapBook及びSave Page WEで保存したWebページをApache Solrで検索できるようにしてみた(その1)

以前、ローカルに保存したWebページのインデックス作成について書きました。

ScrapBookのリンク静的HTMLファイル作成スクリプト
Save Page WE及びScrapBookのインデックスリンク静的HTMLファイル作成スクリプト

ファイル数が増えてきたこともあり、今回はこれまで蓄積してきたWebページをApache Solrを使ってテキスト検索できるようにしてみましたので、その手順をメモ。
今回はその事前準備として、macOS Catalina起動時にApache 2及びApache Solrが自動起動するように設定します。さらに、蓄積されたWebページをインデキシングするまでを扱います。

私の環境はmacOS Catalinaですが、CatalinaにおけるApache 2の設定は次のWebサイトをご覧ください。
Setting up a local web server on macOS 10.15 “Catalina” : Apple Community

Apache Solrインストール準備としてJavaが利用可能である必要があります。

$ java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

ホームディレクトリにApache Solrを~/solrとしてインストールした前提で説明します。”/bin/bash --login /Users/[ユーザ名]/solr/bin/solr start”を実行するAutomator appを作成します。このAutomator appを「ユーザとグループ」のログイン項目に登録することにより、macログイン時に自動的にApache Solrを起動します。
2020051401

ディフォルトでは、Webブラウザからlocalhost:8983にアクセスすると以下の図のとおりの管理画面が表示されます。
2020051402

scrapbookコアを作成するには、Apache Solrのディレクトリから次のコマンドを実行します。


$ ./bin/solr create -c scrapbook

インデキシングのためのスクリプト例を示します。このスクリプトはApache Solrディレクトリ配下の例えばmyscriptディレクトリに配置されていることを前提としています。

mkscbk.sh


#!/bin/sh
begin=19000101000000
end=99999999999999
core='scrapbook'
program='[path to]/script/viewFileList.py'
htmlfile='[path to]/scrapbook_top.html'
listfile='/[path to]/listfile.txt'
opt=FALSE

while getopts ab:e: option; do
case "$option"
in
a) begin=$begin
end=$end
opt=TRUE;;
b) begin=$OPTARG
opt=TRUE;;
e) end=$OPTARG
opt=TRUE;;
\?) echo "Usage: mkscbk.sh [-a] [-b n] [-e n]"
echo " -a means to be indexed for all documents"
echo " -b means to be indexed for documents stored at n (YYYYMMDD
HHMMSS) or newer"
echo " -e means to be indexed for documents stored at n (YYYYMMDDHHMMSS) or older"
exit 1;;
esac
done

if [ $opt = FALSE ] ; then
echo "lack of option"
exit 1
fi

if [ $begin -lt 19000101000000 -o $begin -gt 99999999999999 ] ; then
echo "unexpected number of begin"
exit 1
fi

if [ $end -lt 19000101000000 -o $end -gt 99999999999999 ] ; then
echo "unexpected number of begin"
exit 1
fi

python $program $htmlfile | cut -f 1,2 | awk -v begin=$begin -v end=$end '{if($1>=begin && $1<=end)print $0}' | sort -k1,1 | cut -f 2 | tr '\n' '\0' | xargs -0 ../bin/post -c $core
python $program $htmlfile > $listfile

# EOF

ここで、python viewFileList.py scrapbook_top.htmlは、トップのインデックスHTMLファイルから、作成日時(16桁),ファイル,タイトル,ソースURL,カテゴリ名,当該カテゴリのインデックスHTMLファイル,の各項目をタブ区切りにしたレコードを出力するプログラム実行コマンドです(pythonプログラムコードは割愛)。

Apache Solrにおけるscrapbookコア管理画面

2020051403

キーワード'python'を指定したテキスト検索例

2020051404

無事検索できているようです。

|

« WSLでJupyter Labを使う&ショートカット・アイコンから実行する | トップページ | ScrapBook及びSave Page WEで保存したWebページをApache Solrで検索できるようにしてみた(その2) »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« WSLでJupyter Labを使う&ショートカット・アイコンから実行する | トップページ | ScrapBook及びSave Page WEで保存したWebページをApache Solrで検索できるようにしてみた(その2) »