全文検索してもヒットしなかったり、検索できない場合の確認箇所や対処方法はありますか。
検索サーバーにLuxorを利用している場合はこちらをご参照ください。
検索サーバーにLuceneを利用している場合、検索した際にヒットする文書としない文書がある、登録/更新した文書がヒットしないなど、全文検索ができない場合のチェックポイントを記載します。
問題の一つとして、これから作成予定のインデックスがまだ作成されていない可能性があります。
確認方法
■ チェックポイント1:全文検索用のIndexWatcherが動作しているか
下記URLにアクセスして表示される画面結果で、IndexWatcherの起動の有無を確認してください。
http://【SDB APサーバ名】/hibiki/HBKPing.do
※INSUITE管理者が、SmartDBに接続した(セッションありの)状態で実施してください。
上記実施後、IndexWatcherが起動している場合は、以下のようなメッセージが画面表示されます。
OK IndexWatcher (PRIMARY)
OK IndexWatcher (PRIMARY)
OK IndexWatcher (SECONDERY)
※メッセージが表示されない場合は正しく設定されていない可能性があります。
チェックポイント2を確認してください。
※メッセージが表示された場合は、インデックス作成に時間がかかっている可能性があります。
チェックポイント3を確認してください。
■ チェックポイント2:全文検索の設定が正しく行われているか
default.xmlの全文検索の設定でSmartDB APサーバが正しく設定されているか確認します。
IPアドレスやオプションの設定などに間違いがないか確認します。
<default-values.system.lucene.index-watcher>
<fail-over>
192.168.1.10 PRIMARY no-optimize /var/hibiki/data/cabinet/index/optimize.lock,
192.168.1.11 SECONDARY /var/hibiki/data/cabinet/index/optimize.lock
</fail-over>
</default-values.system.lucene.index-watcher>
※設定に誤りがあった場合は、正しい値へ設定変更します。
※設定変更後はtomcatを再起動する必要があります。
※詳細につきましては、以下のドキュメントを参照ください。
・運用ガイド
└ 全文検索(Lucene) > Luceneのインデックス更新時の設定
次に、チェックポイント3を確認してください。
■ チェックポイント3:インデックスは作成されているか
インデックス作成用のキューテーブルを確認し、インデックス作成状況を確認します。
SmartDBが利用するDBスキーマにログインし、以下のSQLを実行しインデックス未作成件数を確認します。
select count(*) from tbl_hbk_indexer_queue;
何度か実行して、レコード数が減っていればインデックス作成処理が進んでいることになります。
インデックス作成処理が進んでいても、新たに文書が登録されると、一時的に増加する場合がありますが、徐々に上記SQLの結果はゼロに近づいていきます。
この場合、インデックスの作成に時間がかかっている可能性があります。
一定時間後に再度検索を試してください。
件数が減らない場合は、何らかの原因でインデックス作成処理が止まっている可能性があります。
チェックポイント4を確認してください。
■ チェックポイント4:ロックファイルが残っていないか
ロックファイルが残ってしまった場合は、インデックス作成処理が止まってしまうので、ロックファイルの有無を確認します。
以下のロックファイルがないかを確認します。
/vat/hibiki/data/cabinet/index/unified/smartdb_all/index/nomal_index/write.lock
/var/hibiki/data/cabinet/index/optimize.lock
残っている場合は、手動で削除します。 write.lock, optimize.lockの順で削除してください。
その後、チェックポイント3 のSQLを実行してキューの件数が減少するかを確認してください。
ロックファイルもなく、キューの件数も変わらない場合は、再度各チェックポイントを確認してください。 また、hibiki.logなど各種ログを確認し、エラーなどがないかをご確認ください。
注意事項
インデックスキューに溜まった状態で作成処理を再開すると、サーバーの負荷が増加する可能性があります。
懸念される場合は、手動でロックファイルを作成して停止してから再開することができます。
インデックス作成処理を停止/再開する方法
※以下ファイルは共有領域に配置されるファイルですので、どのSmartDBサーバで実施していただいてもかまいません。作業はrootユーザで実行してください。
※write.lock→optimize.lockの順に削除。
・ロックファイルの配置(停止)
# touch /var/hibiki/data/cabinet/index/optimize.lock
# touch /var/hibiki/data/cabinet/index/unified/smartdb_all/index/normal_index/write.lock
・ロックファイルの削除(再開)
# rm /var/hibiki/data/cabinet/index/unified/smartdb_all/index/normal_index/write.lock
# rm /var/hibiki/data/cabinet/index/optimize.lock