Title: Solrの検索用のインデックスのデータを新しく作り直すには
Solr は、TeamPage の投稿データなどの検索用インデックスデータを作成し、ひとつの「箱」のようなものに収納して保存します。この「箱」のことを「コレクション」と呼びます。コレクションは、自動的に割り振られた番号付きのフォルダとして作成されます。
このフォルダが削除された場合など、TeamPage 用の Solr コレクションが見つからないと、TeamPage の Solr 管理画面に下記メッセージが表示されます。
検索エンジンには現在の TeamPage のジャーナル文書が含まれていないようです。この TeamPage を検索エンジンに接続する設定が完了していないか、当該ジャーナルのインデックス データが削除された可能性があります ログファイルで詳細を確認してください。検索エンジンの設定を変更する必要がある場合は、検索エンジンの設定画面を使用してください。
この記事では、新しいコレクションを作成して問題を解消する方法を解説します。
エラーが発生する原因
例えば、TeamPage を別コンピューターに引っ越しさせ、Solr は引っ越し先で新規インストールするとしましょう。
引っ越しされた TeamPage には「Solr のコレクション ID は〜です」という古い情報が残っていますが、新規インストールされた Solr にはそのコレクションが存在していません。
そのため、TeamPage はコレクションを参照できず、Solr の管理画面に次のメッセージを表示します。
問題の解消手順
Solr のコレクション ID の確認
TeamPage でコレクションの ID を調べます。
1. サーバーセットアップ > 一般 > 現在のジャーナル ページで、ジャーナルの場所(パス)を調べます。(参照: FAQ221: 使用中のジャーナルがどこにあるのかを調べるには)
2. サーバーセットアップ > 一般 > サーバー管理 ページの [TeamPage のシャットダウン] をクリックし、TeamPage を停止させます。
3. TeamPage のジャーナルのフォルダにある db.properties というファイルを見つけます。
4. そのファイルをテキストエディタで開いて「solr」で検索すると、次のような行が見つかります。この数字の部分(黄色の部分)がコレクションの ID です。メモしてください。(番号は読み替えてください)
solr_collection_1713953349516_exists=true
solr_collection=1713953349516
solr_enabled=true
5. 上記の3つの行を削除し、db.properties を上書き保存します。
コレクションの削除
次の (1) と (2) のどちらかを実行してください。どちらを実行しても結果は同じです。
方法 (1)
1. Solr は起動したままにします。
2. PowerShell や端末などを使って Solr がインストールされたフォルダ下の solr\bin フォルダに移動します。
3. -c オプションでコレクションの ID を指定して solr
を実行します。
.\solr.cmd delete -c 1713953349516
次のようなメッセージが表示され、箱(コレクション)が削除されます。
Connecting to ZooKeeper at localhost:9983
INFO - 2024-04-24 18:01:56.932; org.apache.solr.client.solrj.impl.ZkClientClusterStateProvider; Cluster at localhost:9983 ready
Deleting collection '1713953349516' using command:
http://192.168.68.118:8983/solr/admin/collections?action=DELETE&name=1713953349516
{
"responseHeader":{
"status":0,
"QTime":749},
"success":{"192.168.68.118:8983_solr":{"responseHeader":{
"status":0,
"QTime":17}}}}
方法 (2)
1. Solr をシャットダウンします。
2. Solr がインストールされたフォルダ下の solr/server/solr フォルダへ移動し、「1713953349516_shard1_replica1」と「zoo_data」というフォルダがあることを確認します。
下図は Linux 環境で Solr が ~/Solr フォルダにインストールされており、その下の solr/server/solr フォルダの中身を表示した例です。
3. これらの 2 つのフォルダを削除します。
4. Solr を起動します。
日本語設定の再インストール
Solr がインストールされたフォルダ下の solr\server\scripts\cloud-scripts にある zkcli
スクリプトを使って、プラグイン「com.traction.extsearch.solr」の中の、etc\solr\configsets\traction_ja\conf をインストールします。(参照: DocSolr53: Solr の日本語用の設定ファイルの設置 (Windows 環境))
次の例は、プラグイン「com.traction.extsearch.solr」をデスクトップに展開し、その中の「etc\solr\configsets\traction_ja\conf」をインストールするコマンド例です。適時パスを読み替えてください。
.\zkcli.bat -cmd upconfig -zkhost 127.0.0.1:9983 -confname traction -confdir C:\Users\UserName\Desktop\com.traction.extsearch.solr\etc\solr\configsets\traction_ja\conf
TeamPage での設定
TeamPage を起動し、サーバーセットアップ > 一般 > 検索設定 ページを開きます。
[Solr 設定を表示] ボタンから Solr 検索の設定画面を表示します。
[Solr を有効にする] で [はい] を選択します。
[すべてのドキュメントのフィード] の [開始] をクリックし、[自動的にリフレッシュ] チェックボックスをオンにします。
検索インデックスのフィードが始まり、画面中央の [完了] 欄が 100% になったら完了です。
関連記事
DocSolr37: Solr の作成済みインデックス データを削除するには