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 の作成済みインデックス データを削除するには



Attachments:
solr01.png
solr02.png
solr03.png
solr04.png
traction.png
関連記事
Article: DocSolr117 (permalink)
Categories: :DocSolr:FAQ
Date: 2024/05/01; 15時30分12秒 JST

Author Name: TeamPage サポート
Author ID: jpbo