日本語検索の修正

(09/10/14)このページでやっている事と同じ結果になるAsian Searchプラグインが作られたため、このページは参考程度になります。なお、このプラグインはDokuWiki本体に組み込まれる予定

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と似たような事をやっています。明らかに冗長ですが…。

なお、ヒット数はおかしいままです。

 
dokuwiki/tips/searchresult.txt · 最終更新: 2009/10/15 00:14 by admin
 
特に明示されていない限り、本Wikiの内容は次のライセンスに従います:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki