トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-plugin/235

ページの作成や編集にはユーザ登録が必要です。

キーワード検索結果を色分け表示させるプラグイン(速度UP、及び誤マッチ修正も)

  • 投稿者: あき
  • カテゴリ: 修正
  • 優先度: 普通
  • 状態: 提案
  • 日時: 2005年11月05日 04時48分29秒

 内容

従来のキーワード検索では、検索しても色分け表示されず、そのページの何処にマッチしたのかよく分かりませんでした。そこで、検索結果のマッチした部分を色分け表示させるよう改造してみました。

また、検索結果として表示される部分ソースも1行しか表示されませんでしたので、マッチした行全てを表示させるようにしてみましたそれぞれの検索キーワード1回ずつは表示させるようにしてみました[1]

例えばこんな感じになります。お遊び気分でこんなのとかも…。(笑)

 制限事項

マッチした行を全て表示させるようにしましたので、その分、検索速度は遅くなっているはずです。どの程度遅くなったのかまでは分かりませんが…。

→全く遅くなっていませんでした。rev01で高速化対応しました。半角英字以外(日本語とか)だと検索速度が飛躍的にアップしました。

 更新履歴

search_ex.zip(585)
初版リリース。
search_ex_rev01.zip(557)
プラグイン化。検索速度高速化(非半角英字時3.5倍)
search_ex_rev02.zip(620)
半角英字を検索すると表示が崩れてしまうことあったバグを修正した。包含関係にある文字列を指定された場合、並び順によっては最長単語のハイライト表示がされないことがあったバグを修正。検索結果の上部にハイライト表示させる単語の一覧を表示させるようにした。
search_ex_rev03.zip(614)
従来バグである1文字漢字を検索すると文字跨りのコードとマッチしてしまうバグ、及び検索結果の表示が崩れるバグを修正。また、コアのファイルを改造して、高速化したつもりが高速化に寄与していなかったコードは削除した。
search_ex_rev04.zip(623)
半角英字の大/小文字同一視が上手く機能していませんでした。確認が足りませんでした。申し訳ありません。
search_ex_rev05.zip(694)
3.6.xに対応しました。
search_ex_rev06.zip(561) 最新
天井-薫問題に代表される誤マッチ対策が不十分だった点を修正。

 インストール方法

  1. plugin/search/SearchHandler.pmをFSWiki設置環境のplugin/search/SearchHandler.pmに上書きして下さい。
  1. plugin/_ex_searchディレクトリをFSWiki設置環境のplugin/下にコピーして下さい。
  2. 管理者メニューのプラグイン設定画面で_ex_searchプラグインをONにして下さい。

プチ改造

  • 一番上に表示されるキーワードのハイライト表示が気に入らない方は(「邪魔だ」と感じる方は)、スタイルシートに「p.search_word_list { display: none; }」を追加するなどして非表示にして下さい。

 動作確認バージョン

 ライセンス

GPL。ご自由にお使いください。

 コメント

  • これいいですね。太字になってるとなお良いかも。 - KG (2005年11月05日 10時11分18秒)
  • え、ほんとですか?(@o@) お遊び気分で改造してみたのですが、気に入って頂けると嬉しいです。太字ですか、――ということでちょっと試してみて――あ、いいですね。じゃ、太字にします。 - あき (2005年11月05日 10時46分54秒)
  • 太字にしました。まだ公開したばかりですので、レビジョンは付けずにアップしました。今気が付いたんですが、googlでの検索結果も太字だったんですね。 - あき (2005年11月05日 10時53分29秒)
  • プラグイン化しました。また、高速化対応しました。しかし、速度のボトルネックになっていると考えていた部分は全くの当て外れでした。(Perlって凄いですね。サブルーチン内から戻り値を返す際は、値のコピーではなくポインタをコピーしているようです) 最後に小手先で対応した半角英字以外の時のみに働く高速化対応だけが有効に働きました。(こちらのテスト環境では7秒が2秒に…) - あき (2005年11月06日 07時54分31秒)
  • すみません。いろいろとバグがありました。修正しましたのでアップします。search_ex_rev02.zip(620)です。 - あき (2005年11月06日 13時24分48秒)
  • これいいですね。検索結果がいまいちわかりにくかったので早速使わせて頂きます。 - KY (2005年11月07日 09時36分44秒)
  • さらに改良して、文字跨りのコードにマッチしてしまう従来からのバグを修正しました。。search_ex_rev03.zip(614)です。小刻みにアップしてすみません。ま、その分良くなってますのでご勘弁下さい。完成度としては従来のものより遙かに良くなっていると思います。 - あき (2005年11月07日 23時48分37秒)
  • あれ?rev03解凍したらInstall.pmしか入っていないんですけど、ウチのPCがおかしいのかな? - hoiho (2005年11月09日 22時47分25秒)
  • それで問題ありません。最終的にそれだけになってしまいました。(笑) - あき (2005年11月09日 22時54分00秒)
  • 大文字・小文字が区別されて検索に引っ掛からないのですが、どうすれば良いですか? - Gol (2005年11月10日 17時30分26秒)
  • すみません。駄目ですね。何処が悪いかも分かりました。後で修正してアップします。行で大/小文字区別有りでヒットした場合だけ、大/小文字区別なく、色分け表示されるようになってました。確認が足りませんでした。申し訳ございません。 - あき (2005年11月10日 18時32分47秒)
  • 修正しました。ご迷惑をお掛け致しました。search_ex_rev04.zip(623)です。 - あき (2005年11月10日 19時51分07秒)
  • 確認しました。ありがとうございました。 - Gol (2005年11月11日 10時08分11秒)
  • BBS-サポート掲示板/547で投稿したものです。version3.6シリーズにも対応していただけないでしょうか? - みけ (2006年06月24日 09時47分29秒)
  • 機能的には3.6.xでも使えますよ。但し、Menuなどページ内に記述するプラグインでは、標準のものを使うので、「ページ内容も含める」というチェックボックス存在自体が無意味になります。3.6.xで、この表示が気になる場合は、plugin/search/SearchForm.pm の 49〜50行目をコメント化して、表示しないようにして運用すると良いでしょう。 - A_M (2006年06月24日 11時21分31秒)
#	$buf .= "<input type=\"checkbox\" id=\"contents\" name=\"c\" value=\"true\">";
#	$buf .= "<label for=\"contents\">ページ内容も含める</label>\n";
  • A_Mさん、どうもご丁寧にありがとうございます。やってみてMenuがスッキリしてよろこんでいます。このプラグインの効果もすばらしいです。訳の分からない(自分も含めてですが…)素人集団の自治会連絡用に使おうと思っていますので極力難しい機能は取ろうと思いました。 - みけ (2006年06月24日 13時04分29秒)
  • 反応が遅くなってすみません。ご要望があるようですので、近々3.6.xにも対応します。「ページ内容も含める」チェックボックスがOFFの時、ページ名だけでのサーチにすれば良いのでしたよね? 未だに3.6.xを試せてなくて…。 - あき (2006年06月26日 13時24分48秒)
  • 『「ページ内容も含める」チェックボックスがOFFの時、ページ名だけでのサーチにすれば良いのでしたよね?』 そうです。対応していただけるとうれしいです。よろしくお願いいたします。 - みけ (2006年06月27日 12時29分21秒)
  • 3.6.xに対応しました。即日対応するつもりが遅くなってしまいました。すみません。 - あき (2006年07月03日 17時13分18秒)
  • 3.6.1と3.6.2で、上部メニューの検索ボタンを押しても、フォームが出現しない状態になりました。<form method="GET" action="wiki.cgi">以下が表示されません。(メニューバーの検索フォームは問題ないので、純粋に画面切り替わりに失敗してるのかも)。色々なプラグインが干渉し合った結果…あたりだと思いますが、一応ご報告します。一つずつプラグインを外して検証をしていきますが、他にどんな可能性が考えられるでしょうか? - くじら (2006年07月03日 19時16分38秒)
  • すみません。再現しました。確認不足でした。早急に直します。一体何なんだろう? 余計なことしたからかな?あー、分かった気がする。はい、余計なことしました。すぐに直せます。少々お待ち下さい。 - あき (2006年07月03日 19時23分04秒)
  • 直しました。確認不足ですみませんでした。search_ex_rev05.zipを上書き更新しています。 - あき (2006年07月03日 19時26分31秒)
  • 早っ! 対応ありがとうございました!無事表示されました。 - くじら (2006年07月03日 19時29分40秒)
  • あきさん、こちらでも確認しました。完動しました。お手数かけました。ありがとう。 - みけ (2006年07月03日 22時30分03秒)
  • 本プラグインを適用して検索ワード「薫」で検索するとき、次に挙げる例のような Wiki ソースは検索に引っかからないようです。- ぐうます (2009年03月15日 02時37分22秒)
明日の日曜日、天井裏を調べてくれないかなあ。
ねえ、頼むよ、薫さん。

その原因は、天井-薫問題 に代表される誤マッチ対策が本プラグインでは施されているのですが、index() 検索で「天井」にマッチした後、天井-薫問題 を避けるための厳密検索で失敗すると、その時点でそのワードでのそのページの検索全体を失敗としてしまうことにあるようです。本来なら、厳密検索で誤マッチと判明したら、「天井」以降のページ内容についてあらためて index() 検索を実施すべきです。

    • ちなみに、次のように「天井」と「薫」が同じ行にある場合には、検索結果に引っかかります。これは、冗長性のある正規表現を厳密検索で使用しているためです。- ぐうます (2009年03月15日 02時37分22秒)
明日の日曜日、天井裏を調べてくれないかなあ。ねえ、頼むよ、薫さん。
  • というわけで、この点についての修正を加えたものを search_ex_rev06.zip(561) として勝手ながら添付致します。 - ぐうます (2009年03月15日 02時37分22秒)
  • 各ページのマッチした最初の行のみの表示ではなく、各ページのマッチした3件分を表示等、変更できるようにできると嬉しいのですが難しいですかねぇ〜? - つぇき (2011年06月06日 14時46分18秒)
お名前: コメント:
  • [1]全行表示させるようにしていたつもりがされていなかったのですが、表示させるようにすると検索ワードやページの組み合わせによっては表示が出過ぎて大変なのでやめました。(笑)
search_ex.zip search_ex_rev01.zip search_ex_rev02.zip search_ex_rev03.zip search_ex_rev04.zip search_ex_rev05.zip search_ex_rev06.zip

最終更新時間:2011年06月06日 14時46分18秒