Fessでエクセル設計書の中を検索しよう!~導入編~
概要
この記事では、全文検索サーバーFessを導入するための方法を説明します。
利用方法については次記事である基本編を参考にしてください。
基本編では「Fessでファイルを読み込む」から「実際に検索をする」までの説明をしています。
タイトルではエクセル設計書をあげていますが、通常のテキストファイルや他のオフィス文書ファイル、そしてPDFなど扱える内容は多いのでエクセル設計書に限らずにお読みください。
経緯
エクセル設計書、とても便利ですよね。
なーんていうと、エクセル設計書に翻弄された経験のある方々は「いやいやいや」とツッコミをしたくなるかもしれません。
かくいう私もエクセル設計書に親こそ殺されていませんが、悩まされたことがないわけではありません。
シートをまたいだ数式や条件付き書式を使うと、すぐコピペで壊す人がいる。
Diff(ファイル差分)をとるのはコツがいる。
そして、複数ファイルをまたいだ検索はしにくい。
ええ、本当にいろんなことに悩まされました。
とはいえ、大抵の端末にオフィスソフトが用意されているのはもはや当たり前。
それが故に、環境を選ばず、だれにでも扱いやすく、プロジェクトや他社を含めた連携が非常に容易なのは間違いなく、それが他のツールの追随を許さない決定的な理由でもあります。
そもそも設計書自体を納品する、というのもよくある話ですので「自社でしか使えないWikiシステムに登録」なんてこともまずありえません。(それ以外の社内向けの体裁を気にしないノウハウはエクセルから脱却させたりしましたが)
数式や条件付き書式が壊れてしまうのも、他のブックからコピペが必要になるような管理方法になっているのがそもそも間違い(ファイルの編集競合が主なのだと思います)でしょうし、DiffについてはWinMergeの標準搭載のエクセル比較プラグインが非常に便利です。
他のツールに移行する際に運用を統一できるなら、エクセル設計書の運用を見直すのも似たり寄ったりなんですよね。
ですが使い方を見直したところで解決しにくい問題があります。
エクセル設計書の保存されているフォルダ全体から、特定のワードを検索することです。
すべての現場がそうであるのかはわかりかねますが、検索ツールにサクラエディタのGrep検索を使用している方は多いでしょう。
このGrep検索機能はかなり高速、軽量でフォルダ内を走破してくれますが、バイナリファイルであるエクセル設計書のセルの中までは検索してくれません。
他にも、複数のエクセルをまとめて検索してくれるマクロとかアプリケーションとか存在していますが、検索速度にしても使いやすさにしても、いまいち実用に足る性能が満たせている気がしません。
「エクセル設計書を扱う以上、こんなものなんだ」と半ばあきらめていたが、ある日、別記事(今後掲載予定)のためにツールを調べていると、サーバーにあらかじめファイルを検索するためのインデックスを作成しておけば、Google検索かのように一瞬で検索させることが可能なのだとしりました。
それが今回扱う、全文検索サーバーFessです。
ターゲット
- エクセルなどのオフィス文書やPDFなどの文書ファイルから検索をしたい人
- Google検索のような検索エンジンを作りたい人
ゴール
全体のゴール
- エクセルの中も検索できるようにする
今回記事のゴール
- Fessをインストールする
用意するもの
-
Fess
今回は「Fess 14.11.1」を使用しています。
移行の手順は公式のドキュメントにはわかりにくい点も多いので、注意が必要です -
JDK Development Kit 17.0.10
バージョンは17のみを扱う(Java21では正常に動作しなかった)
今回はOracle JDKを説明に使用。「JDK 17」と「Windows」を選択してからダウンロード。
Amazon Corretto 17など他のJDKでも問題ないとは思います。
Fessをインストールする
さっそくFessをインストールしてみましょう。
今回のインストール方法は簡単にインストールするために用意されているWindowsバッチを使用することを想定しており、実際には付属のApatchとTomcatで実行しているだけです。
なのでLinuxなどでもバッチを参考に実行することが可能です。
下記のドキュメントはバージョンが古いものなのですが参考になります。
また、今回の手順では「用意されているWindowsバッチ」のクセを修正しながらインストールする手順を紹介しています。
「ややこしいな」と思った方は、公式の手順の方も参考にしてみてくださいね。
Fessを展開する
Fessをダウンロードします。
GitHubなのでReleasesから最新のFessを入手することができます。
ダウンロードしたファイルはFessをインストールしたいフォルダで展開しましょう。
私は図のような配置をしました。
📂 . (例:D:\service\fess)
├── 📂fess-xx.xx.x ←解凍したFessのフォルダ
│ ├ 📂app
│ │ └ 📂WEB-INF
│ │ └ 📂classes
│ │ └ fess_config.properties
│ ├ 📂bin
│ │ ├ fess.in.bat
│ │ └ service.bat
│ └ 📂logs
│
└── (ここには操作するバッチなどを置く予定)
binやlogsのほかにもフォルダがありますが、今回は参照しないので割愛しています。
Fessの設定を変更する(ために改造する)
FessはWebアプリケーションなので、ポート番号やコンテキストパスなどが競合しないように設定をいじる必要があります。
該当箇所はFESS_JAVA_OPTS
で検索すると見つかると思います。
set FESS_CLASSPATH=%FESS_HOME%\lib\classes
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Des-foreground=yes
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.home="%FESS_HOME%"
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.es.dir="%SEARCH_ENGINE_HOME%"
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.context.path=/
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.port=8080
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.webapp.path=%FESS_HOME%\app
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.temp.path=%FESS_HOME%\temp
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.log.name=%APP_NAME%
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.log.path=%FESS_HOME%\logs
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.log.level=warn
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dlasta.env=web
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dtomcat.config.path=tomcat_config.properties
……なんですがこのオプションの羅列、なぜだか先ほどのservice.bat内でも%FESS_PARAMS%
として定義されています。
set FESS_PARAMS=-Dfess;-Dfess.home="%FESS_HOME%";-Dfess.es.dir="%SEARCH_ENGINE_HOME%";-Dfess.home="%FESS_HOME%";-Dfess.context.path="/";-Dfess.port=8080;-Dfess.webapp.path="%FESS_HOME%\app";-Dfess.temp.path="%FESS_HOME%\temp";-Dfess.log.name="%APP_NAME%";-Dfess.log.path="%FESS_HOME%\logs";-Dfess.log.level=warn;-Dlasta.env=web;-Dtomcat.config.path=tomcat_config.properties
このふたつの変数は先ほど修正した//IS//
のオプション、--JvmOptions
と++JvmOptions
でそれぞれ参照しています。(%FESS_JAVA_OPTS%
は前処理で変数%JVM_OPTS%
に置換されています)
Fess 14.11.1では160行目、他のバージョンでも//IS//
で検索すると見つかると思います。
"%EXECUTABLE%" //IS//%SERVICE_ID% --Startup %FESS_START_TYPE% --StopTimeout %FESS_STOP_TIMEOUT% --StartClass org.codelibs.fess.FessBoot --StopClass org.codelibs.fess.FessBoot --StartMethod main --StopMethod shutdown --Classpath "%FESS_CLASSPATH%" --JvmSs %JVM_SS% --JvmMs %JVM_XMS% --JvmMx %JVM_XMX% --JvmOptions %JVM_OPTS% ++JvmOptions %FESS_PARAMS% %LOG_OPTS% --PidFile "%SERVICE_ID%.pid" --DisplayName "%SERVICE_DISPLAY_NAME%" --Description "%SERVICE_DESCRIPTION%" --Jvm "%%JAVA_HOME%%%JVM_DLL%" --StartMode jvm --StopMode jvm --StartPath "%FESS_HOME%" %SERVICE_PARAMS% ++StartParams start
ちょっと読みにくいので改行を含めた書き方に整形するとこんな感じです。
"%EXECUTABLE%" //IS//%SERVICE_ID% ^
--Startup %FESS_START_TYPE% ^
--StopTimeout %FESS_STOP_TIMEOUT% ^
--StartClass org.codelibs.fess.FessBoot ^
--StopClass org.codelibs.fess.FessBoot ^
--StartMethod main ^
--StopMethod shutdown ^
--Classpath "%FESS_CLASSPATH%" ^
--JvmSs %JVM_SS% ^
--JvmMs %JVM_XMS% ^
--JvmMx %JVM_XMX% ^
--JvmOptions %JVM_OPTS% ^
++JvmOptions %FESS_PARAMS% ^
%LOG_OPTS% ^
--PidFile "%SERVICE_ID%.pid" ^
--DisplayName "%SERVICE_DISPLAY_NAME%" ^
--Description "%SERVICE_DESCRIPTION%" ^
--Jvm "%%JAVA_HOME%%%JVM_DLL%" ^
--StartMode jvm ^
--StopMode jvm ^
--StartPath "%FESS_HOME%" ^
%SERVICE_PARAMS% ^
++StartParams start
--JvmOptions
と++JvmOptions
の違いは、--JvmOptions
で設定したオプションを++JvmOptions
で上書きするというものです。
標準の設定の違いは次の通り。
設定キー | fess.in.batの設定値(%FESS_JAVA_OPTS% ) |
service.batの設定値(%FESS_PARAMS% ) |
備考 |
---|---|---|---|
-Dfess | (定義あり) | (定義あり) | |
-Des-foreground | yes | (未定義) | |
-Dfess.home | "%FESS_HOME%" | "%FESS_HOME%" | %FESS_PARAMS%では2回定義されている |
-Dfess.es.dir | "%SEARCH_ENGINE_HOME%" | "%SEARCH_ENGINE_HOME%" | |
-Dfess.context.path | / | "/" | |
-Dfess.port | 8080 | 8080 | |
-Dfess.webapp.path | %FESS_HOME%\app | "%FESS_HOME%\app" | |
-Dfess.temp.path | %FESS_HOME%\temp | "%FESS_HOME%\temp" | |
-Dfess.log.name | %APP_NAME% | "%APP_NAME%" | |
-Dfess.log.path | %FESS_HOME%\logs | "%FESS_HOME%\logs" | |
-Dfess.log.level | warn | warn | |
-Dlasta.env | web | web | |
-Dtomcat.config.path | tomcat_config.properties | tomcat_config.properties |
囲み文字(ダブルクォーテーション)があるかないかの違いはありますが、概ね設定自体は一緒です。
であれば考えられるのは、--JvmOptions
と++JvmOptions
で参照すべき変数が間違っています。
公式の設定手順では「どっちも設定値を修正してくださいね」と案内されていますが、そういう問題じゃありません。
まぁ%FESS_PARAMS%
の-Dfess.home
では、%FESS_PARAMS%
の中でも同じ定義を2回定義していたのでそもそもFess開発元自体が「このバッチでサービス登録するのは開発段階だけだ、本番環境は資産を自前のTomcatなどにデプロイするだろう」と見限っているのかもしれません。
閑話休題。
とにかく、service.batの修正が必要です。
--JvmOptions
と++JvmOptions
で参照する変数を逆にしましょう。
"%EXECUTABLE%" //IS//%SERVICE_ID% --Startup %FESS_START_TYPE% --StopTimeout %FESS_STOP_TIMEOUT% --StartClass org.codelibs.fess.FessBoot --StopClass org.codelibs.fess.FessBoot --StartMethod main --StopMethod shutdown --Classpath "%FESS_CLASSPATH%" --JvmSs %JVM_SS% --JvmMs %JVM_XMS% --JvmMx %JVM_XMX% --JvmOptions %FESS_PARAMS% ++JvmOptions %JVM_OPTS% %LOG_OPTS% --PidFile "%SERVICE_ID%.pid" --DisplayName "%SERVICE_DISPLAY_NAME%" --Description "%SERVICE_DESCRIPTION%" --Jvm "%%JAVA_HOME%%%JVM_DLL%" --StartMode jvm --StopMode jvm --StartPath "%FESS_HOME%" %SERVICE_PARAMS% ++StartParams start
"%EXECUTABLE%" //IS//%SERVICE_ID% ^
--Startup %FESS_START_TYPE% ^
--StopTimeout %FESS_STOP_TIMEOUT% ^
--StartClass org.codelibs.fess.FessBoot ^
--StopClass org.codelibs.fess.FessBoot ^
--StartMethod main ^
--StopMethod shutdown ^
--Classpath "%FESS_CLASSPATH%" ^
--JvmSs %JVM_SS% ^
--JvmMs %JVM_XMS% ^
--JvmMx %JVM_XMX% ^
- --JvmOptions %JVM_OPTS% ^
- ++JvmOptions %FESS_PARAMS% ^
+ --JvmOptions %FESS_PARAMS% ^
+ ++JvmOptions %JVM_OPTS% ^
%LOG_OPTS% ^
--PidFile "%SERVICE_ID%.pid" ^
--DisplayName "%SERVICE_DISPLAY_NAME%" ^
--Description "%SERVICE_DESCRIPTION%" ^
--Jvm "%%JAVA_HOME%%%JVM_DLL%" ^
--StartMode jvm ^
--StopMode jvm ^
--StartPath "%FESS_HOME%" ^
%SERVICE_PARAMS% ^
++StartParams start
これでfess.in.batの設定が優先されるようになります。お好みの設定に変更しましょう。
ない設定は、service.batの%FESS_PARAMS%
の設定が優先されますので注釈化しても問題ありません。
set FESS_CLASSPATH=%FESS_HOME%\lib\classes
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Des-foreground=yes
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.home="%FESS_HOME%"
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.es.dir="%SEARCH_ENGINE_HOME%"
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.context.path=/
- set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.port=8080
+ rem set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.port=8080
+ set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.port=8081
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.webapp.path=%FESS_HOME%\app
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.temp.path=%FESS_HOME%\temp
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.log.name=%APP_NAME%
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.log.path=%FESS_HOME%\logs
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.log.level=warn
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dlasta.env=web
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dtomcat.config.path=tomcat_config.properties
JVMを指定する(ために改造する)
不具合ではないのですが、Fessには私にとっての不都合があります。
システム環境変数のJAVA_HOMEを参照していることです。
Fessは現在Java 17(JDK 17)じゃなければ実行できません。
しかし、並行しているシステムはJava 17にはないJava EE(javax)のクラスを参照していることがあるので安易にJava 17に変更すると問題が発生する可能性があります。
そうでなくとも今はすでにJava 21という安定盤が存在し、Fessは今のところJava 21で実行できません。(Issueを確認するとfess 15.0にて対応しようとしている軌跡が見えるため、いずれは対応するものだとは思います)
よって、バージョンアップに影響しないようにシステム環境変数のJAVA_HOMEを参照せず、直接JDKを指定したいのです。
Fessの起動方法の修正
しかし、現状のFessでは「無理やりにでもJAVA_HOMEを参照しようとする」記載がサービスのインストールバッチにあるため、そこを修正する必要があります。
"%EXECUTABLE%" //IS//%SERVICE_ID% --Startup %FESS_START_TYPE% --StopTimeout %FESS_STOP_TIMEOUT% --StartClass org.codelibs.fess.FessBoot --StopClass org.codelibs.fess.FessBoot --StartMethod main --StopMethod shutdown --Classpath "%FESS_CLASSPATH%" --JvmSs %JVM_SS% --JvmMs %JVM_XMS% --JvmMx %JVM_XMX% --JvmOptions %FESS_PARAMS% ++JvmOptions %JVM_OPTS% %LOG_OPTS% --PidFile "%SERVICE_ID%.pid" --DisplayName "%SERVICE_DISPLAY_NAME%" --Description "%SERVICE_DESCRIPTION%" --Jvm "%%JAVA_HOME%%%JVM_DLL%" --StartMode jvm --StopMode jvm --StartPath "%FESS_HOME%" %SERVICE_PARAMS% ++StartParams start
"%EXECUTABLE%" //IS//%SERVICE_ID% ^
--Startup %FESS_START_TYPE% ^
--StopTimeout %FESS_STOP_TIMEOUT% ^
--StartClass org.codelibs.fess.FessBoot ^
--StopClass org.codelibs.fess.FessBoot ^
--StartMethod main ^
--StopMethod shutdown ^
--Classpath "%FESS_CLASSPATH%" ^
--JvmSs %JVM_SS% ^
--JvmMs %JVM_XMS% ^
--JvmMx %JVM_XMX% ^
--JvmOptions %FESS_PARAMS% ^
++JvmOptions %JVM_OPTS% ^
%LOG_OPTS% ^
--PidFile "%SERVICE_ID%.pid" ^
--DisplayName "%SERVICE_DISPLAY_NAME%" ^
--Description "%SERVICE_DESCRIPTION%" ^
--Jvm "%%JAVA_HOME%%%JVM_DLL%" ^
--StartMode jvm ^
--StopMode jvm ^
--StartPath "%FESS_HOME%" ^
%SERVICE_PARAMS% ^
++StartParams start
--Jvm
オプションが"%%JAVA_HOME%%%JVM_DLL%"
となっています。
これだとバッチの先頭でset %JAVA_HOME%
と定義したとしても、定義したJAVA_HOMEを参照はしてくれません。
思い切って"%JAVA_HOME%%JVM_DLL%"
と修正してしまいましょう。
"%EXECUTABLE%" //IS//%SERVICE_ID% --Startup %FESS_START_TYPE% --StopTimeout %FESS_STOP_TIMEOUT% --StartClass org.codelibs.fess.FessBoot --StopClass org.codelibs.fess.FessBoot --StartMethod main --StopMethod shutdown --Classpath "%FESS_CLASSPATH%" --JvmSs %JVM_SS% --JvmMs %JVM_XMS% --JvmMx %JVM_XMX% --JvmOptions %FESS_PARAMS% ++JvmOptions %JVM_OPTS% %LOG_OPTS% --PidFile "%SERVICE_ID%.pid" --DisplayName "%SERVICE_DISPLAY_NAME%" --Description "%SERVICE_DESCRIPTION%" --Jvm "%JAVA_HOME%%JVM_DLL%" --StartMode jvm --StopMode jvm --StartPath "%FESS_HOME%" %SERVICE_PARAMS% ++StartParams start
"%EXECUTABLE%" //IS//%SERVICE_ID% ^
--Startup %FESS_START_TYPE% ^
--StopTimeout %FESS_STOP_TIMEOUT% ^
--StartClass org.codelibs.fess.FessBoot ^
--StopClass org.codelibs.fess.FessBoot ^
--StartMethod main ^
--StopMethod shutdown ^
--Classpath "%FESS_CLASSPATH%" ^
--JvmSs %JVM_SS% ^
--JvmMs %JVM_XMS% ^
--JvmMx %JVM_XMX% ^
--JvmOptions %FESS_PARAMS% ^
++JvmOptions %JVM_OPTS% ^
%LOG_OPTS% ^
--PidFile "%SERVICE_ID%.pid" ^
--DisplayName "%SERVICE_DISPLAY_NAME%" ^
--Description "%SERVICE_DESCRIPTION%" ^
- --Jvm "%%JAVA_HOME%%%JVM_DLL%" ^
+ --Jvm "%JAVA_HOME%%JVM_DLL%" ^
--StartMode jvm ^
--StopMode jvm ^
--StartPath "%FESS_HOME%" ^
%SERVICE_PARAMS% ^
++StartParams start
当然、インストールしたFessが更新されればこの問題は元に戻ってしまうので、都度修正の必要があるかと思います。
Fessのプロパティファイルの修正
さてここまでは、設定はFessを起動するためのものでした。
しかし実際にはFessが検索するためのインデックスを作る処理は、別のJava参照があります。
……いや、なんでわけたの???
疑問に思っていても仕方がないですし、そもそもFessは検索画面と検索のインデックスを作る処理を分離できるようなので、その辺のむつかしい話が理由なんだと考えておきましょう、うん。
変更すべき設定は.\fess-xx.xx.x\app\WEB-INF\classes\fess_config.properties
にあります。
java.command.path
を検索してみてください。
# job
job.system.job.ids=default_crawler
job.template.title.web=Web Crawler - {0}
job.template.title.file=File Crawler - {0}
job.template.title.data=Data Crawler - {0}
job.template.script=return container.getComponent("crawlJob").logLevel("info").sessionId("{3}").webConfigIds([{0}] as String[]).fileConfigIds([{1}] as String[]).dataConfigIds([{2}] as String[]).jobExecutor(executor).execute();
job.max.crawler.processes=0
job.default.script=groovy
processors=0
java.command.path=java
python.command.path=python
すでにpythonも嫌な予感はしますが、この辺はインデックスを作成するための処理を作る画面のフォームの初期値や、その処理の仕方を設定するプロパティです。
このjava
という値がアプリケーションのルートフォルダ(標準だと.\fess-xx.xx.x\app
)直下にあるJava.exeを探してしまっています。
システム環境変数を設定している場合は、他のコマンド同様PATH
を一緒に参照しに行くため問題は生じません。
java.command.path
にjava.exeまでのパスを通しましょう。
この時、区切り文字は\\
である必要があります。円記号(バックスラッシュ)の数に注意してください。
# job
job.system.job.ids=default_crawler
job.template.title.web=Web Crawler - {0}
job.template.title.file=File Crawler - {0}
job.template.title.data=Data Crawler - {0}
job.template.script=return container.getComponent("crawlJob").logLevel("info").sessionId("{3}").webConfigIds([{0}] as String[]).fileConfigIds([{1}] as String[]).dataConfigIds([{2}] as String[]).jobExecutor(executor).execute();
job.max.crawler.processes=0
job.default.script=groovy
processors=0
- java.command.path=java
+ java.command.path=C:\\Program Files\\Java\\jdk-17.0.10\\bin\\java.exe
python.command.path=python
サービスのインストールバッチを用意する
Fessを展開したフォルダ(📂 .)にサービスのインストールバッチ、そしてアンインストールバッチをつくっていきましょう。
service.batに引数を渡すことで、サービスのインストール、アンインストールは実行できます。
インストールバッチ
文字コードはShift_JISを指定して作成してください。
@echo off
pushd %~dp0\fess-xx.xx.x\bin\
setlocal
rem 任意のJavaインストールフォルダを設定する
rem システム環境変数のJAVA_HOMEを使用する場合は次の行を注釈化
set JAVA_HOME=C:\Program Files\Java\jdk-17.0.10
.\service.bat install
endlocal
popd
exit /b
アンインストールバッチ
文字コードはShift_JISを指定して作成してください。
@echo off
pushd %~dp0\fess-xx.xx.x\bin\
setlocal
rem 任意のJavaインストールフォルダを設定する
rem システム環境変数のJAVA_HOMEを使用する場合は次の行を注釈化
set JAVA_HOME=C:\Program Files\Java\jdk-17.0.10
.\service.bat remove
endlocal
popd
exit /b
サービスをインストールする
用意したインストールバッチ(install.bat)を実行しましょう。
処理が完了した後、サービスを開くと「Fess (fess-service-x64)」が登録されていることが確認できます。
「サービスの開始」を実行し、サービスが正常に起動していることを確認しましょう。
その後、fess.in.batに設定したURL(コンテキストパスとポート番号)を参照し、検索画面が表示されればインストールは完了です。
ログインしてみる
現状ではなにも設定されていませんので、検索をしても何もヒットしません。
詳細な設定は、記事が長くなったため次回に回すとして、Fessへのログインだけしてみましょう。
まずは画面右上の「ログイン」を押下します。
ログインフォームが開いたらユーザー名、パスワードを入力します。
初期ユーザー名は「admin」、初期パスワードは「admin」です。
初期ユーザー名、初期パスワードでログインするとパスワードの更新を促されるので変更します。
「パスワードを更新しました」と表示されたら「戻る」を押下します。
右上にユーザー名「admin」が表示されていればログインが成功しています。
そのほかについて
サービスのアンインストールについて
fess.in.batの設定を変更する場合には一度、サービスをアンインストールする必要があります。
用意したアンインストールバッチ(uninstall.bat)を実行し、サービスが消えたことを確認できればアンインストール完了です。
設定を変更し、再度インストールバッチ(install.bat)を実行しましょう。
右上の⚠はなに?
今回の手順でインストールした場合、Fessの検索画面の右上に警告マーク⚠が表示されます。
これは手順上でOpenSearchの設定をしていないためです。
FessはOpenSearchの機能を利用して検索することができるのですが、そもそもFessにOpenSearchは内蔵されています。
したがって個人利用、および簡単な検索をする程度ならば気にする必要はなく、処理速度重視、ないし多くの負荷がかかる本番環境では負荷分散のために別途インストールが必要だという警告です。
したがって今回は個人利用、あるいは小規模なプロジェクトメンバーで利用することを念頭にしているため考慮していませんし、消えることはありません。
⚠が気になる方、本番環境相当のセットアップをしたい方は、公式のインストール手順を参考にしてOpenSearchをインストールしてください。
ですがぶっちゃけ、利用者が少人数であるかぎりこの設定は不要だと思われます。
次回、検索ができるようにFessの設定をします!
思った以上に導入の手順が長くなってしまったので、実際に検索できるようにする設定は次回に分割しようと思います。
Discussion