goo blog サービス終了のお知らせ 

40代ヘタレプログラマ(組込系)のブログ

個人的な備忘録
ときどきつぶやきます
http://twitter.com/h100401jp

全文検索システム FESS を 試す (8)

2019-05-25 00:49:38 | 日記
(※2019/7/1 修正 Fess 12.6.1 から 13.1.1 にアップデート)

2014年秋頃に Fess 9.2.0 という全文検索システムを使用していた。
 
 
その後、職場異動になり、しばらく Fess から遠ざかっていたのだが、たまたま PC が一つ空いたので、再び現在の職場で Fess 13.1.1 を試用することにした。

オープンソース全文検索サーバー Fess (フェス)
http://fess.codelibs.org/ja/

今回も目的は同じで社内のプライベート LAN につながっているテラバイト NAS 内の検索。トポロジー的にはこんな感じ。

├─┐
│ Fess 13.1.1
│ Windows 7 sp1 pro 64bit
│ HDD 500G
│ メモリ 24G
│ 172.20.10.10/16

├─┐
│ NAS
│ 数テラバイト
│ 172.20.10.100/16

├─┐
│ ユーザーPC
│ Windows 10 など
│ 172.20.*.*/16


というわけでセットアップなどを備忘録的に書いていく。

──────────────────────────────
Fess 13.1.1 のインストール

Windows7 の PC に 単純に fess-13.1.1.zip の中身をとりだして
そのまま配置した。(下位フォルダは省略。)

C:\fess\fess-13.1.1
   ├─app
   ├─bin
   ├─es
   ├─extension
   ├─lib
   ├─logs
   ├─temp

──────────────────────────────
JDK のインストール

jdk-11.0.4_windows-x64_bin.exe を JAVA の WEB サイトからダウンロードしてインストールした。

──────────────────────────────
Pathの追加

コントロールパネル経由で下記のパスを追加した

C:\Program Files\Java\jdk-11.0.4 \bin

──────────────────────────────
PowerShell スクリプト C:\fess\fess-13.1.1\bin\fess_start.ps1 を新規作成

必要な環境変数を設定して fess.bat を起動する PowerShell スクリプトを新規作成した。
バッチファイルでなく PowerShell スクリプトにしたのは、 Fess が起動失敗したらリトライさせるため。
Solr から ElasticSearch に変更されてから、よく起動失敗しているように見受けられる。
 
それから物理メモリは 24Gbyte と潤沢に搭載しているのでメモリ最大値を変更しておく。
 
─────
#環境変数 JAVA_HOME 設定
[System.Environment]::SetEnvironmentVariable('JAVA_HOME', 'C:\Program Files\Java\jdk-11.0.4', 'Machine')
#環境変数 FESS_HEAP_SIZE を4ギガに設定
[System.Environment]::SetEnvironmentVariable('FESS_HEAP_SIZE', '4g', 'Machine')
C:
cd C:\fess\fess-13.1.1\bin

#Fess 起動ループ もし起動失敗していたら再トライする
do {
    #Fess 起動
    $proc = Start-Process -FilePath "C:\fess\fess-13.1.1\bin\fess.bat" -PassThru

    Start-Sleep -Seconds 120

    #ログファイルサイズ監視ループ
    do {
        Start-Sleep -Seconds 60
        $logsize = (Get-ChildItem "C:\fess\fess-13.1.1\logs\server_0.log").Length
    } while ($logsize -lt 10000) #10kバイト越えていたら起動失敗とみなし、ループ終了

    #Fess 強制終了
    Stop-Process -Name "java" #この処理入れると他のjavaプログラムも落ちるが仕方ないとする
    Stop-Process -InputObject $proc #この一行だけではうまく動かなかった
    Start-Sleep -Seconds 10
} while (1)
─────
 
──────────────────────────────
C:\fess\fess-13.1.1\app\WEB-INF\classes\fess_config.properties
 
こちらもメモリ最大値を変更しておく。
ファイルの #JVM options のところを修正した。
 
-Xms4g\n\
-Xmx4g\n\
 
──────────────────────────────
C:\fess\fess-13.1.1\app\WEB-INF\classes\crawler\contentlength.xml
 
クロール対象とするファイルサイズを大きくしておく
 
<property name="defaultMaxLength">41943040</property>
 
──────────────────────────────
C:\fess\fess-13.1.1\app\WEB-INF\env\crawler\resources\app.xml
 
CPU や NAS に負担をかけたくない昼間は1回クロールするごとに、15秒のインターバルをいれて、クロール作業スピードを落としておく。
 
<postConstruct name="addIntervalRule">
    <arg>"9:00"</arg>
    <arg>"21:00"</arg>
    <arg>"1,2,3,4,5,6,7"</arg>
    <arg>15000</arg>
</postConstruct>
 
──────────────────────────────
とりあえず FESS 起動前にすることは以上



最新の画像もっと見る