ずいぶん前に elastic search で、全文検索を構築しました。
今時は、opensearch に進化して、Fessをインターフェースとして全文検索するようになっています。
subversionと連携したい場合、DAV svn とかを使えばOkです。
ファイルシステムなら、Windows共有をsmbでクロールするばOkです。
これで、仕事の効率も上がりますな。
割と気軽に全文検索システムを導入出来るのですが、管理するのは面倒ですよね。
なので、一気にDockerで構築してみました。
大量のクロールをするには、メモリとかCPUリソースが必要なので、お手軽版となります。
まー、本家にもDockerが公開されているので、今回は、Arm版で行きます。
REST APIを使って、AIに食わせるなんて芸当も可能でしょうね <- この辺りは、研究しておきます。
とりあえず、Raspberry PI 4 あたりで試してみましょう。
OCIのArmインスタンスとかでもOkです。
とりあえず、DockerとComposeが使える状態でお願いしますよ。
適当なフォルダを作って、以下のファイルを作成して下さい。
Dockerfile
FROM ubuntu:24.04
EXPOSE 8080/tcp
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Tokyo
RUN apt -y update;apt -y upgrade; apt install -y wget sudo unzip vim sudo
RUN apt install -y tzdata default-jre-headless
RUN useradd -m opensearch
RUN <<EOF
#
cat <<- _DOC_ > /root/fessinst.sh
#!/bin/bash
cd /tmp
if [ ! -e /opt/fess ]; then
wget https://github.com/codelibs/fess/releases/download/fess-14.16.0/fess-14.16.0.zip
unzip fess-14.16.0.zip
rm fess-14.16.0.zip
mv fess-14.16.0 fess;mv fess /opt
fi
if [ ! -e /opt/opensearch ]; then
wget https://artifacts.opensearch.org/releases/bundle/opensearch/2.16.0/opensearch-2.16.0-linux-arm64.tar.gz
mkdir -p /opt/opensearch
chown opensearch:opensearch /opt/opensearch
sudo -u opensearch tar -xvf opensearch-2.16.0-linux-arm64.tar.gz -C /opt/opensearch --strip-components 1
rm opensearch-2.16.0-linux-arm64.tar.gz
sudo -u opensearch /opt/opensearch/bin/opensearch-plugin install -b org.codelibs.opensearch:opensearch-analysis-fess:2.16.0
sudo -u opensearch /opt/opensearch/bin/opensearch-plugin install -b org.codelibs.opensearch:opensearch-analysis-extension:2.16.0
sudo -u opensearch /opt/opensearch/bin/opensearch-plugin install -b org.codelibs.opensearch:opensearch-minhash:2.16.0
sudo -u opensearch /opt/opensearch/bin/opensearch-plugin install -b org.codelibs.opensearch:opensearch-configsync:2.16.0
echo "network.host: 127.0.0.1" >> /opt/opensearch/config/opensearch.yml
echo "http.port: 9200" >> /opt/opensearch/config/opensearch.yml
echo "configsync.config_path: /opt/opensearch/data/config/" >> /opt/opensearch/config/opensearch.yml
echo "plugins.security.disabled: true" >> /opt/opensearch/config/opensearch.yml
fi
#Opensearch起動
sudo -u opensearch /opt/opensearch/bin/opensearch &
#fess起動
export SEARCH_ENGINE_HTTP_URL=http://localhost:9200
export FESS_DICTIONARY_PATH=/opt/opensearch/data/config/
/opt/fess/bin/fess
_DOC_
EOF
RUN chmod a+x /root/fessinst.sh
CMD ["/root/fessinst.sh"]
起動
docker compose up -d
停止
docker compose down
以上です。
あとは、接続してみましょう。
起動するのに5分ぐらいかかりますよ。
http://ホストのIP:8080/
おまけ
LDAPを設定して、ユーザー管理をActiveDirectoryと連携します。
全般の設定- システムにある項目ですね。
サンプルは、hogehoge.co.jp ドメインです。
LDAP:ldap://dc1.hogehoge.co.jp <- ActiveDirectoryサーバー
Base DN:dc=hogehoge,dc=co,dc=jp <- ドメインのDNです。
Bind DN:
パスワード:hogehogepw <- 管理者ユーザーのパスワードです。
User DN:%
アカウントフィルタ:(&(objectClass=user)(sAMAccountName=%s)) <- お決まりです。
グループフィルタ:(member:1.2.840.113556.1.4.1941:=%s) <- お決まりです。
memberOf属性:memberOf <- お決まりです。
Webクロールのパーミッション設定のサンプル
{group}捜査一課 <- 検索結果を見ることが出来るActiveDirectoryのグループ等
{group}捜査課 <- 検索結果を見ることが出来るActiveDirectoryのグループ等
上手くいかなかったら、検索ログの所に、検索者のグループ一覧が出てるので参考にしましょう。