#author("2020-02-16T00:06:07+09:00","","")
#author("2020-02-16T00:06:33+09:00","","")
* 検索で対象ワードが0 になった場合も、get_existpages() している [#ua5ab1fa]

- ページ: [[BugTrack]]
- 投稿者: 名無しさん
- 優先順位: 低
- 状態: 却下
- カテゴリー: 本体バグ
- 投稿日: 2010-03-07 (日) 01:48:30
- バージョン: 1.4.7

** メッセージ [#d9173f2e]
SPAM 対策になるかどうかもあやしいような提案ですが。

do_search() に送られた検索語句が半角スペースばかり((search プラグインが除外するのは空文字だけなので、そうなる可能性もある))の場合、
	$keys = get_search_words(preg_split('/\s+/', $word, -1, PREG_SPLIT_NO_EMPTY));
で$key にはarray() がセットされます。~
しかし、そのような場合でも全ページの一覧を得ています。(foreach ($keys as $key) の内側でget_source() しているので、さらに全ページのソースを得るというような無駄な事は、していないようですが)

無駄といえば無駄な処理なので、
 	if (empty($keys)) {
 		$pages = array();
 	} else {
 		$pages = get_existpages();
 	}
のようにしてしまうというのはどうでしょう?(if ($non_format) return array_keys($pages); の手前までelse 部分に入れてしまう方が、いいような気も・・・)

--------

- こちら、レアケースですし get_existpages() にそれほど時間がかかるわけでもないので現状のままとしますし -- [[umorigu]] &new{2020-02-16 (日) 00:04:57};
- こちら、レアケースですし get_existpages() にそれほど時間がかかるわけでもないので現状のままとします -- [[umorigu]] &new{2020-02-16 (日) 00:04:57};

#comment


**同じマッチパターンを使用して検索する場合がある [#ac13b252]
- 検索関係という事で、もう1つ。~
「ぱんだ」と「パンダ」などget_search_words() で加工した後が同一になるキーワードが複数あった場合、(S でパターンをキャッシュしているとはいえ)何度もpreg_match() させるのは無駄じゃないでしょうか?~
得られた$keys をarray_unique() をしてしまうか、get_search_words() の仕様を変更して$regex のキーをmb_convert_kana で加工した後の語句にして重複を防ぐ、というのはどうでしょう? --  &new{2010-03-07 (日) 02:20:24};
-- ちなみに「ぱんだ ぱんだ」のように全く同じ場合でも、現状ではもう1度パターン生成のプロセスに入ってしまうようです。(すでに登録しているかを、チェックしていない) --  &new{2010-03-07 (日) 02:20:24};

*修正パッチ [#oebb63f6]
     $keys = get_search_words(preg_split('/\s+/', $word, -1, PREG_SPLIT_NO_EMPTY));
 +    if ( empty($keys) )
 +        return str_replace('$1', '', $_msg_notfoundresult);

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.087 sec.

SourceForge