ラベル 全文検索 の投稿を表示しています。 すべての投稿を表示
ラベル 全文検索 の投稿を表示しています。 すべての投稿を表示

Fess #14:ファイル共有のインデックスが作成できない(Docker版)

バージョン

Fess 14.14 (Docker版)

ファイル共有のインデックスが作成できない(Docker版)

Windows(Dockerのホスト)上に共有フォルダ(\\192.168.1.1\doc)を作成、
ここにドキュメント類を置いてインデックスを作成したいのだが…
うまくいかない。

旧システム(Docker版ではないやつ)は "file:////192.168.1.1/doc" でうまくいってた。

クローラー:ファイルシステム:パスの設定をいろいろ変えて試してみる

1. "file://///192.168.1.1/doc"
→ ダメ

2. クローラー:ファイル認証 で認証情報を追加してみる
ホスト名:192.168.1.1
スキーム:Samba
ユーザー名:(ユーザー名)
パスワード:(パスワード)
ファイルクロール設定:(クローラーで設定した名前)
→ ダメ

3. "file:////192.168.1.1/doc"
※ file: の後ろにスラッシュを4つ
→ ダメ

4. "smb://192.168.1.1/doc"
→ ダメ

5. "smb://192.168.1.1/doc/"
→ ダメ

6. ファイル認証情報のユーザー名にコンピュータ名(IP)を付けてみる
※ 192.168.1.1\username みたいに
→ ダメ

7. "file://192.168.1.1/doc/"
8. "file://///192.168.1.1/doc/"
9. "file:////192.168.1.1/doc/"
→ ダメ

Fess #13:インデックスが作成されない(Docker版)


バージョン

Fess 14.14
・・・のはずだが、バージョン情報ってどこで見るんだ?

インデックスが作成されない(Docker版)

前回(Docker版インストール)でFessを構築したが、インデックスが作成できない。

インデックス作成対象のフォルダは D:\documents としている。
[クローラー] - [ファイルシステム] にて、パス "file:d:/documents" で登録し、Default Crawler のジョブを動かしたがインデックスが作成される気配がない。
クローラーのパス指定を "file:/d:/documents" へ変更したがダメ。

で、ふと思ったけど、FessはWSL2上のDockerで動いてる。
Dockerからホストのドライブって見れないよね・・・

services:
  fess01:
    :(省略)
    restart: unless-stopped
    volumes:
      - /D/documents:/home/documents
      :(省略)
docker compose -f compose.yaml -f compose-opensearch2.yaml up -d --build

Fess #12:Docker Desktop版をインストールしてみる

公開:2024.06.13 15:42

FessのDocker版をインストールしてみる

マシン老朽化のため、現在使用中のFessマシンを破棄することになった。
ということで、新マシンにFessを構築しようとしたが、Docker版がデフォルトのようだ。

https://fess.codelibs.org/ja/quick-start.html

Docker版インストール手順:
https://fess.codelibs.org/ja/setup.html

ということで、Windows 11にDocker版のFessを構築してみる。

環境

Windows 11 Pro 23H2 (22631.3737)

インストール方法

公式の手順を元に作業を進める。

1. Docker Desktopのインストール
mkdir fess-docker && cd fess-docker curl -OL https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose.yaml curl -OL https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose-opensearch3.yaml

実行結果:
root@xxx:~# mkdir fess-docker && cd fess-docker
root@xxx:~/fess-docker# curl -OL https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   867  100   867    0     0   3470      0 --:--:-- --:--:-- --:--:--  3468
root@xxx:~/fess-docker# curl -OL https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose-opensearch3.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1258  100  1258    0     0   5601      0 --:--:-- --:--:-- --:--:--  5616
      
compose.yamlとcompose-opensearch3.yamlがダウンロードされているはずなので確認。
実行結果:
root@xxx:~/fess-docker# ls
compose-opensearch3.yaml  compose.yaml
      

2. vm.max_map_countの設定
set_vm_max_map_count_to_at_least_262144
通常は WSL 2版のDocker Desktopのはずなので、そのあたりの手順をやっておく。
コマンドプロンプトで、
wsl -d docker-desktop -u root
vi /etc/sysctl.conf
とし、以下の行を追加する。(viで行追加するには "o")
vm.max_map_count = 262144

設定がうまくいったか確認するには?
sysctl vm.max_map_count
と打てばよい。
vm.max_map_countとは?

3. 起動ファイルの作成
手順書の通りに "curl" コマンドを入力。
自分の場合は D:\app\fess フォルダを作成、カレントディレクトリをfessフォルダに移動してから実行した。(別にどこでも良いが)
curl -o compose.yaml https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose.yaml
curl -o compose-opensearch2.yaml https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose-opensearch2.yaml
4. Fessの起動
以下コマンドで勝手にダウンロードが始まって起動まで終わる。
docker compose -f compose.yaml -f compose-opensearch2.yaml up -d
-f で起動ファイルを指定し、 up でコンテナ起動
-d はバックグラウンドで実行(デタッチモード)

管理者のアカウントは?
→ admin / admin でログインできる。


Fess #10:Elasticsearch サービス起動

ElasticsearchをBAT起動でなくサービス起動させるには?


手順

コマンドプロンプト(管理者)で "c:\elasticsearch\bin" フォルダを開き、
elasticsearch-service.bat install
を実行する。
その後コンパネのサービスを開き、Elasticsearchのサービスを起動

サービスの削除は
elasticsearch-service.bat remove


Elasticsearch

Fess #9:Elasticsearchインストール (Windows 10)

Fess単体でも動作するが、これは"開発モード"らしく、本番系ではElasticsearchのインストールが必要、とのことらしい。
ということで Elasticsearchのインストールを行う。

※ 前回記事:#6 URLで検索対象を分けたい
記事一覧


バージョン

Windows 10 20H2 19042.985
Fess 13.12.2 (C:\fess-113.12.2 にインストール)
OpenJDK 16.0.1 (C:\jdk-16.0.1 にインストール)
Elasticsearch 7.12.1 (C:\elasticsearch-7.12.1 にインストール)

手順

Fessのドキュメント https://fess.codelibs.org/ja/13.12/install/install.html を参考にインストールを行う。
※ 上記ドキュメントの "ZIPパッケージを利用する場合 (Windows)" を参照

1. JDKとFessのインストール

全文検索 Fess + Windows 10 #1:インストール を参考にインストールしておく。

2. ダウンロード

https://www.elastic.co/jp/ - 画面上部の[製品] - [Elascitsearch] - [ダウンロードして使いはじめる] - [(1) Get Elasticsearch] - [Windows] をクリック

3. 展開

ダウンロードした elasticsearch-7.12.1-windows-x86_64.zip を解凍し、解凍後の elasticsearch-7.12.1 フォルダを C:\ へ移動

4. Elasticsearchプラグインインストール

システム環境変数に ES_JAVA_HOME を追加、Javaのパス(C:\jdk-16.0.1) を指定する。

コマンドプロンプトを起動し以下コマンドを入力する
cd /d c:\elasticsearch-7.12.1\bin
elasticsearch-plugin install org.codelibs:elasticsearch-analysis-fess:7.12.0
elasticsearch-plugin install org.codelibs:elasticsearch-analysis-extension:7.12.0
elasticsearch-plugin install org.codelibs:elasticsearch-minhash:7.12.0
・コマンドを入力すると "Continue with installation? [y/N]" と聞いてくる場合があるので "y" を入力し先に進む
・コマンド末尾の数字"7.12.0"はElasticsearchのバージョンと思われるが "7.12.1" へ変更したところエラーでインストールできなかった。
とりあえず 7.12.0 のまま作業を進める。
・インターネット接続が必要。接続されていないとエラーとなる。
・ちょうどのタイミングで Elasticsearch 7.13.0 がリリースされた。しかし7.13.0のプラグインは存在しなかった(エラーとなった)ため、Elasticsearch 7.12.1 で作業を進める。

5. コンフィグ設定

c:\elasticsearch-7.12.1\config\elasticsearch.yml ファイルをエディタで開き、末尾に以下行を追加
configsync.config_path: c:/elasticsearch-7.12.1/config/
・Fessのドキュメントでは "configsync.config_path: [absolute path of $ES_HOME]/data/config/" と記載があるが Elasticsearchのフォルダ内に /data/config/フォルダ は存在しない。

6. configsync展開

https://repo.maven.apache.org/maven2/org/codelibs/elasticsearch-configsync/7.12.0/elasticsearch-configsync-7.12.0.zip をダウンロードし解凍
C:\elasticsearch-7.12.1\modules\configsyncフォルダを作成し、解凍後の4つのファイルを作成したフォルダへ移動

C:\elasticsearch-7.12.1\config\elasticsearch.ymlをエディタで開き、末尾に以下内容を貼り付け保存
configsync.config_path: c:/elasticsearch-7.12.1/config/

7. Fess起動オプション設定

C:\fess-13.12.2\bin\fess.in.bat をエディタで開き、最後の方にある以下行先頭の "REM" を取り除く
2行目については値が誤っている?ので変更する。
REM set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.es.http_address=http://localhost:9200
REM set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.dictionary.path=%ES_HOME%/config/
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.es.http_address=http://localhost:9200
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.dictionary.path=c:/elasticsearch-7.12.1/config/

8. メモリ使用量の調整

自動調整が推薦されているが、Elasticsearchのメモリ使用量を少なくしたい場合は C:\elasticsearch-7.12.1\config\jvm.options ファイルを編集する
例えば最大ピープサイズを1GBにするには、以下の記述を追加する
- Xms2g
- Xmx2g

9. 起動

C:\elasticsearch-7.12.1\bin\elasticsearch.bat を起動
C:\fess-13.12.2\bin\fess.bat を起動


全文検索, Fess, Elasticsearch

Fess #8:Elasticsearch サービス起動しなくなった

Elasticsearchのサービスが起動しなくなってしまった。

※ 記事一覧


環境

Ubuntu 20.04.1 LTS
Elasticsearch 7.9.1
OpenJDK 11.0.8

現象

Elasticsearchのサービスを起動してみるがエラーで起動できない。
user@user-pc:~$ sudo systemctl start elasticsearch.service
Job for elasticsearch.service failed because the control process exited with error code.
See "systemctl status elasticsearch.service" and "journalctl -xe" for details.
おそらく "apt upgrade -y" でシステム全更新したのが原因と思われる。

"systemctl status elasticsearch.service" でステータスを確認してみる。
user@user-pc:~$ systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
    Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Fri 2020-09-04 16:39:00 JST; 2min 11s ago
      Docs: https://www.elastic.co
    Process: 13533 ExecStart=/usr/share/elasticsearch/bin/systemd-entrypoint -p ${PID_DIR}/elasticsearch.pid --quiet (code=exited, status=1>
  Main PID: 13533 (code=exited, status=1/FAILURE)

9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170)
9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161)
9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareComman>
9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127)
9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.cli.Command.main(Command.java:90)
9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126)
9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
9月 04 16:39:00 user-pc systemd[1]: elasticsearch.service: Main process exited, code=exited, status=1/FAILURE
9月 04 16:39:00 user-pc systemd[1]: elasticsearch.service: Failed with result 'exit-code'.
9月 04 16:39:00 user-pc systemd[1]: Failed to start Elasticsearch.
Elasticsearchのログ(/var/log/elasticsearch/elasticsearch.log)を見てみる。
(suでスーパーユーザーにしておなかいと見れなかった)
[2020-09-04T16:38:59,553][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [user-pc] fatal error in thread [main], exiting
java.lang.NoSuchMethodError: org.elasticsearch.index.mapper.MappedFieldType: method 'void ()' not found
        at org.codelibs.elasticsearch.minhash.index.mapper.MinHashFieldMapper$MinHashFieldType.(MinHashFieldMapper.java:144) ~[?:?]
        at org.codelibs.elasticsearch.minhash.index.mapper.MinHashFieldMapper$Defaults.(MinHashFieldMapper.java:62) ~[?:?]
        at org.codelibs.elasticsearch.minhash.index.mapper.MinHashFieldMapper$Builder.(MinHashFieldMapper.java:79) ~[?:?]
        at org.codelibs.elasticsearch.minhash.index.mapper.MinHashFieldMapper$TypeParser.parse(MinHashFieldMapper.java:107) ~[?:?]
        at org.elasticsearch.index.mapper.ObjectMapper$TypeParser.parseProperties(ObjectMapper.java:319) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.ObjectMapper$TypeParser.parseObjectOrDocumentTypeProperties(ObjectMapper.java:237) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.RootObjectMapper$TypeParser.parse(RootObjectMapper.java:141) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:108) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:88) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:421) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:377) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.MapperService.merge(MapperService.java:355) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.checkMappingsCompatibility(MetadataIndexUpgradeService.java:188) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.upgradeIndexMetadata(MetadataIndexUpgradeService.java:92) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadata(GatewayMetaState.java:247) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadataForNode(GatewayMetaState.java:230) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.gateway.GatewayMetaState.start(GatewayMetaState.java:161) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.node.Node.start(Node.java:786) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:317) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:402) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127) ~[elasticsearch-cli-7.9.1.jar:7.9.1]
        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.9.1.jar:7.9.1]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.9.1.jar:7.9.1]
原因不明のため、とりあえず "apt-get install elasticsearch=7.8.0" で 元々のバージョン Elasticsearch 7.8.0 にバージョンダウンしてみる。
root@user-pc:/var/log/elasticsearch# apt-get install elasticsearch=7.8.0
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libfprint-2-tod1 libllvm9
これを削除するには 'apt autoremove' を利用してください。
以下のパッケージは「ダウングレード」されます:
  elasticsearch
アップグレード: 0 個、新規インストール: 0 個、ダウングレード: 1 個、削除: 0 個、保留: 0 個。
319 MB 中 0 B のアーカイブを取得する必要があります。
この操作後に 111 kB のディスク容量が解放されます。
続行しますか? [Y/n] y
dpkg: 警告: elasticsearch を 7.9.1 から 7.8.0 にダウングレードしています
(データベースを読み込んでいます ... 現在 202389 個のファイルとディレクトリがインストールされています。)
.../elasticsearch_7.8.0_amd64.deb を展開する準備をしています ...
elasticsearch (7.8.0) で (7.9.1 に) 上書き展開しています ...
elasticsearch (7.8.0) を設定しています ...
新バージョンの設定ファイル /etc/elasticsearch/log4j2.properties をインストールしています ...
Created elasticsearch keystore in /etc/elasticsearch/elasticsearch.keystore
systemd (245.4-4ubuntu3.2) のトリガを処理しています ...
Elasticsearchのサービスを起動してみる。
user@user-pc:~$ sudo systemctl start elasticsearch.service
[sudo] user のパスワード:
user@user-pc:~$ systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
    Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
    Active: active (running) since Fri 2020-09-04 17:02:06 JST; 15s ago
      Docs: https://www.elastic.co
  Main PID: 14152 (java)
      Tasks: 82 (limit: 4656)
    Memory: 1.3G
    CGroup: /system.slice/elasticsearch.service
            ├─14152 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative>
            └─14356 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller

9月 04 17:01:44 user-pc systemd[1]: Starting Elasticsearch...
9月 04 17:02:06 user-pc systemd[1]: Started Elasticsearch.
lines 1-13/13 (END)
Fessのサービスを起動してみる。
user@user-pc:~$ sudo systemctl start fess.service
user@user-pc:~$ systemctl status fess.service
● fess.service - Fess
    Loaded: loaded (/lib/systemd/system/fess.service; enabled; vendor preset: enabled)
    Active: active (running) since Fri 2020-09-04 17:02:44 JST; 12s ago
      Docs: http://fess.codelibs.org/
  Main PID: 14429 (java)
      Tasks: 32 (limit: 4656)
    Memory: 608.4M
    CGroup: /system.slice/fess.service
            └─14429 /bin/java -Xms512m -Xmx512m -XX:MaxMetaspaceSize=256m -XX:CompressedClassSpaceSize=32m -Djava.awt.headless=true -Dhttp>

9月 04 17:02:44 user-pc systemd[1]: Started Fess.

正常に起動できた。


Elasticsearch

Fess #8:作成したインデックスが消えてしまう


FessのスケジューラーでDefault Crawlerが動作し、正しくインデックスが作成、また、検索出来ることも確認したのだが、
しばらくすると何も検索できなくなってしまう。(検索結果がゼロ)

原因

インデックスには有効期限があり、有効期限を過ぎるとインデックスは削除されてしまう。
有効期限の既定値は3日

毎日インデックスを作成しておけば、このような現象は発生しない?

設定変更

とりあえずインデックスが削除されないように設定を行う。
Fessの管理者画面から [システム] > [全般] > "クローラー" のところの "以前のドキュメントを削除" に "-1" を設定する。


Fess

XAMPP+MySQL+mroonga #2:インストール

※ 前回記事:XAMPP+MySQL+mroonga #1

XAMPP + MySQL環境で全文検索 mroonga
前回はうまくいかなかったのでもう一度最初からリトライしてみる


インストール

今度は一つ前のバージョン(10.3)の64bit版
mariadb-10.3.22-with-mroonga-10.03-winx64
で試してみる。

1) C:\XAMP\MySQLフォルダをリネーム (MySQL_bak)

2) ダウンロードしたzipを解凍し C:\XAMPP\MySQL フォルダ名として移動

3) XAMPP Control Panel からのMySQL起動
エラーで起動できない

4) コマンドプロンプトでMySQL起動
XAMPP Control Panel の[Shell]ボタンからサービス起動(コマンドプロンプトでも良いが)
Setting environment for using XAMPP for Windows.
xxx@xxx c:\xampp
# cd mysql

xxx@xxx c:\xampp\mysql
# mysqld
2020-06-04  7:46:15 0 [Note] mysqld (mysqld 10.3.22-MariaDB) starting as process 15440 ...
5) phpMyAdminを起動してみる
起動は出来たが以下メッセージが表示されている
mysqli::real_connect(): (HY000/1045): Access denied for user 'pma'@'localhost' (using password: NO)
設定ファイルに定義されている管理ユーザ(controluser)での接続に失敗しました。

[Shell]ボタンでコマンドプロンプトを起動し以下SQLを実行してみる
"C:\xampp\phpMyAdmin\sql\create_tables.sql"
Setting environment for using XAMPP for Windows.
xxx@xxx c:\xampp
# cd mysql

xxx@xxx c:\xampp\mysql
# mysql -u root < C:\xampp\phpMyAdmin\sql\create_tables.sql

xxx@xxx c:\xampp\mysql
    
もう一度phpMyAdminでデータベース一覧を確認すると phpmyadmin が作成された。
しかしエラー現象は変わらず。

ユーザアカウント一覧を確認すると pma ユーザが存在しない
phpMyAdminでpmaユーザを作成
・ユーザ名:pma
・ホスト名:%
・パスワード:pma
・グローバル特権:すべてチェックする

C:\XAMPP\phpMyAdmin\config.inc.php をメモ帳で開く
下記箇所を探しpmaのパスワード"pma"を設定する
$cfg['Servers'][$i]['controlpass'] = '';
$cfg['Servers'][$i]['controlpass'] = 'pma';
もう一度phpMyAdminを開く

→ エラーは解消された


技術メモ, XAMPP, MySQL, mroonga, 全文検索

Mroonga #1:XAMPP環境へのインストール

MySQLで全文検索を行うには?
MySQL標準でも出来るみたいだが、別にMroongaというのもあるらしい。
https://mroonga.org/ja/
インストールしてみる。


環境

・Windows 10 1909
・XAMPP
・MySQL 10.4.11-MariaDB - mariadb.org binary distribution

インストール

https://mroonga.org/ja/
・ 最新記事 Mroonga 10.02リリース! (2020-04-29)
・ "インストール" リンク
・ "2.1.2.Zip" ・ "MariaDB with Mroonga-10.02"
・ ダウンロードしたZIPを解凍
・ XAMPPからMySQLを停止させておく
・ "C:\xampp\mysql" フォルダ名をリネーム ※C:\xampp\mysql_bak
・ 解凍したフォルダを "C:\xampp\mysql" として移動
・ XAMPPでMySQLを起動

→ エラーが発生した
7:51:36 [mysql] Error: MySQL shutdown unexpectedly.
7:51:36 [mysql] This may be due to a blocked port, missing dependencies,
7:51:36 [mysql] improper privileges, a crash, or a shutdown by another method.
7:51:36 [mysql] Press the Logs button to view error logs and check
7:51:36 [mysql] the Windows Event Viewer for more clues
7:51:36 [mysql] If you need more help, copy and post this
7:51:36 [mysql] entire log window on the forums

64bit版なのが原因かもしれないので、32bit版をダウンロードしてみる。

→ 現象変わらず
→ たぶんXAMPPには対応してないんでしょう

https://mroonga.org/ja/docs/install/windows.html#zip に書かれた通りコマンドから実行してみる。
C:\xampp\mysql\bin>mysqld.exe --defaults-file=.\MY-PREFERRED-INI.ini --console
Could not open required defaults file: C:\xampp\mysql\bin\MY-PREFERRED-INI.ini
Fatal error in defaults handling. Program aborted

MY-PREFERRED-INI.iniってファイルは存在しない
INIを検索すると dataフォルダにmy.iniがあったので
C:\xampp\mysql\bin>mysqld.exe --defaults-file=..\data\my.ini --console
2020-05-28 13:25:22 0 [Note] mysqld.exe (mysqld 10.4.12-MariaDB) starting as process 7552 ...
2020-05-28 13:25:22 0 [Warning] Can't create test file C:\projects\mariadb-10.4.12-win32\data\DESKTOP-S0KA939.lower-test
mysqld.exe: Can't change dir to 'C:\projects\mariadb-10.4.12-win32\data\' (Errcode: 2 "No such file or directory")
2020-05-28 13:25:22 0 [ERROR] Aborting

いったん保留


技術メモ, MySQL, 全文検索, Mroonga

Fess #6:URLで検索対象を分けたい

URLで検索対象を分けたい。

※ 前回記事:#5 エラー その2
記事一覧


例)
http://localhost/sales/ … 営業系資料の検索
http://localhost/tech/ … 技術系資料の検索 など

fessの仮想ホスト機能を使えばできそうだが、ドキュメントを読んでもよくわからない。


全文検索, Fess, 調査中

Fess #5:エラー その2

Fessを起動したら、またエラーが発生するようになった。
OS再起動するとエラーとなるのかな?

※ 前回記事:#4 ネットワークフォルダのインデックス
記事一覧


前回発生したエラー:#3 エラー?

環境変数PathにJavaのパス(%JAVA_HOME%\Bin)を追加設定したらエラー発生しなくなった。

たまたま直っただけかも。


全文検索, Fess

全文検索エンジン Apache Solr

全文検索エンジン Apache Solr をインストールしてみる。

◆Javaインストール
JDK 8u161 with NetBeans 8.2 をインストールした

◆Apache Solrダウンロード
lucene.apache.org/solr/ → [DOWNLOAD] より最新版をダウンロード
solr-7.2.1.zip をダウンロードし C:\solr へ解凍した

◆Exampleの実行
サンプルが含まれているようで solr\example\README.txt の内容を元に実行してみる。
◇SolrCloud
SolrCloudモード、というのを実行してみる。
コマンドプロンプトを起動し CD /D C:\solr でディレクトリを移動し、以下のコマンドを実行。
bin\solr start -e cloud
すると、実行するノードの数を聞いてくる。既定値(2)のままで良いので[Enter]キーを押す。
次にノード1のポートを聞いてくる。既定値(8983)のままで良いので[Enter]キーを押す。

次にノード2のポートを聞いてくる。既定値(7574)のままで良いので[Enter]キーを押す。

ここでファイアウォールのメッセージが出たので[アクセスを許可する]をクリック

インデックス作成のための名前を聞いてきる。
チュートリアルでは "techproducts" と入れてみよう、ということなのでその通り入力してみる。

2つのノード間でインデックスを分割する分割数を聞いてくる。既定値(2)のままで良いので[Enter]キーを押す。

レプリカの数を聞いてくる。既定値(2)のままで良いので[Enter]キーを押す。

設定ファイルを聞いてくる。"_default" か "sample_techproducts_configs" のどちらか選べるようだが、ここではチュートリアルに従い "sample_techproducts_configs" と入力する。

処理が終了した。

画面に表示されたURL (http://localhost:8983/solr/) を表示


次にインデックスを作成する。
サンブルの文書は Solr\example\exampledocs に含まれている。
Windows版ではインデックスを作成するpostツールが無いため、サンプルに含まれている example\exampledocs\post.jar を実行する。
java -jar -Dc=techproducts -Dauto example\exampledocs\post.jar example\exampledocs\*

作成終了


文書を検索してみる。
web管理画面の Collection Select で「techproducts」を選択し [Query] をクリック、[Execute Query]ボタンをクリック


結果が表示される。結果はJSON形式。

Solrに送信されたURLは画面上部に表示される。


"foundation"を検索する場合、q欄に「foundation」と入力し [Execute Query]ボタンをクリック


これでチュートリアルは終了。
作成したコレクションを削除するには、
bin\solr delete -c techproducts

新しくコレクションを作成するには、
bin\solr create -c [yourCollection] -s 2 -rf 2

実行中のノードを停止するには、
bin\solr stop -all

チュートリアルのノードを開始するには、
bin\solr start -c -p 8983 -s example/cloud/node1/solr

詳しくは https://lucene.apache.org/solr/guide/7_2/solr-control-script-reference.html#solr-control-script-reference


その他の記事