無料ブログ「rentafree.net」の管理人ブログ

ブログの記事検索の仕様を変更しました

ブログのキーワードによる検索の仕様を変更しました。

今回の仕様変更は、
元の仕様は、インデックス未作成分のタイトル、本文、追記をMySQLから取得してからPerlで検索していましたが、サーバー複数台構成を考えると転送量が多くなってしまうのでMySQLだけでやるべき。
ってのと、
1000件単位でインデックス未作成分を抽出していて、1回の検索で1000件(古いものから)しか検索できないので、1000記事を超える場合は最新記事は1回の検索では絶対出てこない。
ってな感じだったので、そこらを修正。

ちょっと複雑になったので、不具合あったらごめんなさいです。
とりあえず、管理ページの記事一覧のキーワード抽出のみ修正しています。
公開ブログ側も近日中に同じ仕様にすると思います。

記事数が1000を超える場合については、
検索開始から2秒未満の場合は1001件目以降もループ処理で1000件単位で処理が続くようになりました。
計算は1秒単位ですので、誤差が最大1秒でます。
複数キーワードの場合は元々ですがキーワード単位で最低1000件は検索され、キーワード多すぎで10秒経過した場合はそれ以降は全く検索しません。
1万記事程度で1キーワードならすぐ終わると思いますんで、基本的には1回の検索で全記事検索されると思います。
検索時に検索用インデックスを作りますんで、2回目以降でインデックス作成済みの範囲は、どれだけ記事があっても瞬時に終わります。

その他今回の修正の副作用的なもんですが、
元々3byte未満のキーワードは無視していましたが、1byteから検索されるようになりました。
一度インデックスに登録された記事をキーワードを削除して日付を最新に更新した場合、再検索時にインデックスから削除されていましたが、一度インデックスに登録されたら消せなくなりました。