#author("2022-03-22T00:41:22+09:00","default:user","user")
#author("2022-03-22T00:42:05+09:00","default:user","user")
*単語検索の区切り文字に全角スペースを使いたい [#v2dbd8f4]
- 元タイトル: 単語検索で、単語の区切り文字に全角スペースが使えない。

-ページ: [[BugTrack]]
-投稿者: [[よっちい]]
-優先順位: 低
-状態: 完了
-カテゴリー: 本体新機能
-投稿日: 2004-11-11 (木) 10:17:42
-バージョン: 1.4.4
-リリース予定バージョン: 1.5.4

**メッセージ [#n3d8f457]
plugin/search.inc.phpの単語検索で、全角スペースが単語の区切りと認識されず、それを含めた1語として検索をかけてしまいます。
 --- func.php.orig       Sat Aug  7 00:39:52 2004
 +++ func.php    Thu Nov 11 10:06:10 2004
 @@ -175,6 +175,7 @@
         $retval = array();
 
         $b_type = ($type == 'AND'); // AND:TRUE OR:FALSE
 +       $word = mb_convert_kana($word, "s");
         $keys = get_search_words(preg_split('/\s+/', $word, -1, PREG_SPLIT_NO_EMPTY));
 
         $_pages = get_existpages();
こうするといちおう解決できそうですが、
-mb_convert_kana()を使ってしまう
-検索結果画面の「これらのキーワードがハイライトされています」の語はつながったまま

と、いまひとつです。もう少しいい案はないでしょうか。

----
-多少強引な方法で、次のようにすると大丈夫そうですが・・・ -- [[teanan]] &new{2004-11-11 (木) 10:58:12};
 plugin/search.inc.php 18行目付近
	if ($s_word != '')
	{
 +		$vars['word'] = mb_convert_kana($vars['word'], "s");
		$msg = str_replace('$1',$s_word,$_title_result);
		$body = do_search($vars['word'],$type);
	}
--$vars['word']を書き換えるところがちょっと気持ち悪いですが、「これらのキーワードがハイライトされています」は$vars['word']を見ているようです。 -- [[teanan]] &new{2004-11-11 (木) 11:02:17};
-- あ、なるほど。lib/func.phpを修正するよりは、影響範囲が狭くできるのでいいかもしれません。''$s_word''にもmb_convert_kana()をかけると、タイトルに表示される検索語も半角スペースになりますね。
~とりあえず現状を「仕様」とするのかが判断できないので、コアなメンバーさんのコメントをいただきたいところであります。 -- [[よっちい]] &new{2004-11-11 (木) 19:16:24};
-こんにちは :) 現状は「ただあるがまま」です。半角スペースがデリミタになっています。私が始めて投げたBugTrack [[BugTrack/170]] をチェックしていただくとニュアンスが伝わるかと思います。 -- [[henoheno]] &new{2004-11-11 (木) 21:34:07};
-全角スペースがデリミタとして認識されないのは、コマンドライン上のツールを始めとして従来よりあるごく普通の状態だと思いますので、仮にこれを実装する場合についてコメントします。 -- [[henoheno]] &new{2004-11-11 (木) 21:36:04};
-うまい方法があれば使わせていただきます :) でも上記の改造そのままだと、日本語にこだわった造りになってしまうと思います。海外の方がソースを見たら嫌がるでしょう (^^; ((初期化処理や前作業にあたる処理なので、もっと上の行に配置して、さらに英語でコメントを置くのはいかがでしょう)) wordについては、検索結果を一覧表示する部分をハックするのはいかがでしょうか。 -- [[henoheno]] &new{2004-11-11 (木) 21:44:46};
-積極的に現状を変える考えがない、ということであれば今のままでも構わないと思います。とりあえず寝ながら考えた結果、こんな感じでどうかな
 --- search.inc.php.orig	Sat Jul 31 12:09:20 2004
 +++ search.inc.php	Fri Nov 12 09:16:23 2004
 @@ -10,7 +10,20 @@
  	global $script,$vars;
  	global $_title_result,$_title_search,$_msg_searching,$_btn_and,$_btn_or,$_btn_search;
  
 -	$s_word = array_key_exists('word',$vars) ? htmlspecialchars($vars['word']) : '';
 +	if(array_key_exists('word',$vars))
 +	{
 +		if(LANG == 'ja')
 +		{
 +			$vars['word'] = mb_convert_kana($vars['word'], "s");
 +		}
 +
 +		$s_word = htmlspecialchars($vars['word']);
 +	}
 +	else
 +	{
 +		$s_word = '';
 +	}
 +
  	$type = array_key_exists('type',$vars) ? $vars['type'] : '';
  
  	if ($s_word != '')
ということになりました。 -- [[よっちい]] &new{2004-11-12 (金) 09:27:33};

- [[BugTrack2/233]] --  &new{2007-05-02 (水) 10:44:07};
- すいませんが1,4,6ではどのように設定すればよいか教えてください。 -- [[ロマ]] &new{2006-05-01 (月) 11:32:31};
-- 1.4.7ですとどのように設定すればよいでしょうか?? -- [[idea]] &new{2010-06-01 (火) 16:36:12};
-- 1.4.5以降ならこんな改造かな。
  	if ($s_word != '') {
 +		switch (LANG) {
 +		case 'ja':
 +			$vars['word'] = mb_convert_kana($vars['word'], 's');
 +			$s_word = mb_convert_kana($s_word, 's');
 +			break;
 +		}
  		// Search
  		$msg  = str_replace('$1', $s_word, $_title_result);
  		$body = do_search($vars['word'], $type, FALSE, $base);
  	} else {
  		// Init
  		unset($vars['word']); // Stop using $_msg_word at lib/html.php
  		$msg  = $_title_search;
  		$body = '<br />' . "\n" . $_msg_searching . "\n";
  	}
  
  	// Show search form
2004-11-12のよっちいさんの案を参考にしました。 --  &new{2010-06-01 (火) 18:15:36};
-- 1.4.7で試してみましたが、うまくいかず下記のようにエラーを返されました。 
 Fatal error: Call to undefined function mb_convert_kana() in /格納場所/search.inc.php on line 52
で
 $vars['word'] = mb_convert_kana($vars['word'], 's');
の部分です。素人ですいませんが、わかりましたらご教授ください。-- [[idea]] &new{2010-06-03 (木) 08:57:55};
--- 未定義の関数mb_convert_kanaを呼び出そうとした、というエラーです。今回は、mbstringモジュールが入っていない(有効になっていない)事が原因だと思われます。 --  &new{2010-06-03 (木) 18:36:50};
- search2 でのみ対応しました: commit:b97afb6701 全角スペースを含む文字列の検索はできなくなっています(割り切り) -- [[umorigu]] &new{2022-03-22 (火) 00:42:05};

#comment

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

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.043 sec.

OSDN