全文検索namazuの不具合について
こんばんわサタルタンです。
今回は全文検索ナマズの不具合について触れようかと思います。
まず、ナマズを使用しているWEBページをGoogleなりYahooなりで検索してください。
そして、「{学校}」と検索してください。
すると検索結果で学校の「校」が文字化けします。
しないページがありますが、ある一定条件では文字化けを確認しました。
確認環境は以下の通り
Windows 7
Google Chrome、IE、Firefox
ナマズ文字コードEUC
WEBページEUC
フレーズ検索モードにて確認
以上です。
MacのSafariで試したところ文字化けしないページばかりだったので、環境によるかもしれません。
もし、フレーズ検索(フレイズ検索orフレエズ検索)を行い、文字化けするようでしたら続きのページにて記載する方法を試してください。
さてさてここを見ているということは、私と同じ問題に直面したことを前提で話を進めます。
Namazuには「make」や「make install」にてコンパイルする作業がありますが、その作業待ってください。
Tarファイルをダウンロードし、サーバーへアップロードし、tarコマンドで解凍後、「Namazuディレクトリ→nmz」へ移動します。
「vi search.c」などで「search.c」を開きます。
932行目くらいに以下のソースがあります。
1static void remove_quotes(char *str)
2{
3if ((strlen(str) >= 3 && (*str == ‘”‘ && str[strlen(str) – 1] == ‘”‘))
4|| (*str == ‘{‘ && str[strlen(str) – 1] == ‘}’))
5{
6strcpy(str, str + 1);
7str[strlen(str) – 1]= ‘\0’;
8}
9}
この部分の「strcpy」を書き換えることで今回の不具合が直ります。
書き換える内容は「memcpy(str,str+1,strlen(str));」です。
strcpy(str, str + 1);
を
memcpy(str,str+1,strlen(str));
へ変更します。
その後は通常通り「make」コマンドなどでコンパイルします。
ここで注意が必要なのは、一度「make」をしていたら正常に動作しない場合があるので、tarから解凍を再度行った後にソースを書き換えてください。
そして、別ページで紹介されている方法で設置してみてください。
正常に動きましたか?
もし、動いたらよかったですね。