ずいぶん前に 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.yml 
services:
 main:
  build:
   context: .
  command: /root/fessinst.sh
  hostname: fessworker
  tty: true
  ports:
    - "0.0.0.0:8080:8080"
  volumes:
  - ./opt:/opt
 
networks:
 app-tier:
  driver: host

 

起動

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:このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。   <- 管理者ユーザーです。
パスワード:hogehogepw                <- 管理者ユーザーのパスワードです。
User DN:%このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。       <- ユーザーDNの書式です。
アカウントフィルタ:(&(objectClass=user)(sAMAccountName=%s))   <- お決まりです。
グループフィルタ:(member:1.2.840.113556.1.4.1941:=%s)            <- お決まりです。
memberOf属性:memberOf                                                            <- お決まりです。

 

Webクロールのパーミッション設定のサンプル

{group}捜査一課   <- 検索結果を見ることが出来るActiveDirectoryのグループ等
{group}捜査課      <- 検索結果を見ることが出来るActiveDirectoryのグループ等

 

上手くいかなかったら、検索ログの所に、検索者のグループ一覧が出てるので参考にしましょう。

 

Joomla templates by a4joomla