やりたいことは、Linuxのファイルシステムをクロールした結果を、Windowsの共有フォルダとしてユーザーに使って貰えるようにすることです。
Windowsで利用しているNAS共有フォルダ\\nasserver\sharename
があります。
これをWSL2でmountしました。
sudo mount -t cifs -o vers=3.0, iocharset=utf8 "\\nasserver\sharename" /mnt/nas/sharename
その後、compose.yamlのservices.fess01.volumes
を追記し、コンテナ内で利用できるようにしました。
volumes:
- /mnt/nas/sharename:/nas/sharename:ro
そして、docker compose -f compose.yaml -f compose-opensearch2.yaml up -d
で起動。
ファイルシステムとして、file:/nas/sharename
に対して検索クローラが動くことで、
インデックスが実際に行われ、FESS検索画面から検索結果が確認できるようになりました。
これをパスマッピングしたいです。
検索結果は次のように、URI形式になっていますが、
file://nas/sharename/~/path/to/result.extension
このようにWindows形式のパスにしたいです。
\\nasserver\sharename\~\path\to\result.extension
試しに、下記のような正規表現を入れてみましたが、やはりJavaの正規表現としては正しくないので、動作しないようです。
Regular Expression | Replacement |
---|---|
^file:/nas/sharename/(.*)$ |
\\\\nasserver\\sharename\\${1/\//\\} |
2段階にする方法も考えましたが、対象以外も置換してしまいそうで断念しました。
Regular Expression | Replacement |
---|---|
^file:/nas/sharename/ |
\\\\nasserver\\sharename\\ |
/ |
\\ |
直接SMBプロトコルでアクセスする以外にスマートな方法はございませんでしょうか?