DokuWikiは、日本語で検索すると検索結果のハイライトがおかしくなります。見つけたページに行ってもそのハイライトが引き継がれるため、少々見づらい状態になる事もしばしばあります。
ここでは、MeCab導入による分かち書き…ではなく、fulltext.phpを少しいじって検索機能をちょっとだけ手直しする方法を紹介します。
/inc/fulltext.php内のhandle phrase searches処理(2009-02-14版だと417行目)が始まる直前に、以下を挿入します。
$dqarray = array();
$noarray = array();
while(preg_match('/"(.*?)"/',$query,$match)){
$dqarray[] = $match[0];
$query = preg_replace('/"(.*?)"/','',$query,1);
}
$query = preg_replace('/[\x{3000}]/u',' ',$query);
$noarray = explode(' ',$query);
foreach($noarray as $key=>$value){
if(preg_match('/^-(.*?)/u',$value)){
}elseif(preg_match('/(('.IDX_ASIAN.')+)/u',$value)){
$value = '"'.$value.'"';
$noarray[$key] = $value;
}
}
$query = implode(' ',$dqarray).' '.implode(' ',$noarray);
見ればわかるかと思いますが、handle phrase searchesと似たような事をやっています。明らかに冗長ですが…。
なお、ヒット数はおかしいままです。