FreeBSD/Namazu の変更点


*Namazu [#pea751c3]

ソース:~
http://www.namazu.org/index.html.ja

#contents

**インストール [#p6791dcf]
 $ cd /usr/ports/japanese/namazu2
 $ make install clean

***インストール(ソース) [#r4ef36d4]
 $ tar zxvf namazu-2.0.19.tar.gz
 $ cd namazu-2.0.19
 $ ./configure
 $ make
 # make install

**「mknmz」の設定 [#r8987b3e]
 # cp -p /usr/local/etc/namazu/mknmzrc-sample /usr/local/etc/namazu/mknmzrc
 # chmod 644 /usr/local/etc/namazu/mknmzrc
 # vi /usr/local/etc/namazu/mknmzrc
 
 # $NKF = "module_nkf";
 # $MECAB = "module_mecab";
 # $WAKATI = $MECAB;
           ↓「mknmzrc」の編集(編集後) 
 $NKF = "module_nkf";
 $MECAB = "module_mecab";
 $WAKATI = $MECAB;

**「namazu」の設定 [#sb566085]
 # cp -p /usr/local/etc/namazu/namazurc-sample /usr/local/etc/namazu/namazurc
 # chmod 644 /usr/local/etc/namazu/namazurc
 # vi /usr/local/etc/namazu/namazurc
 Index        /usr/local/var/namazu/index/root_http/
 Template     /usr/local/var/namazu/index/root_http/
 Lang         ja

**「mknmz」によるインデックスの作成 [#f6c37ea9]
 $ export LANG=ja_JP.eucJP
 $ export LC_ALL=ja_JP.eucJP
 $ mknmz -O /usr/local/var/namazu/index/test /home/www/http/

**「namazu」による全文検索 [#wcef70a3]
 $ namazu test

*Webページからの全文検索 [#m165742a]

**CGIファイルのコピー [#u1458d9e]
 $ cp -p /usr/local/libexec/namazu.cgi /home/www/root_http/

**「.namazurc」の作成 [#mc70ed02]
 $ cp -p /usr/local/etc/namazu/namazurc /home/www/root_http/.namazurc

**「.namazurc」への追記 [#ze67a72b]
 Replace  /home/www/root_http  http://www.kishiro.com

**フィルタのインストール [#u577ba04]
ExcelとPowerPoint?形式ファイルをHTMLに変換ツール
 # cd /usr/ports/textproc/xlhtml
 # make ; make install ; make clean
pdftohtmlのインストール ~
PDF形式ファイルをHTMLに変換ツール
 # cd /usr/ports/textproc/pdftohtml
 # make -D WITHOUT_X11 install ; make clean 
wvWareのインストール ~
Word形式ファイルをHTMLに変換ツール
 # cd /usr/ports/textproc/wv
 # make -D WITHOUT_X11 install ; make clean
いろいろ
 # cd /usr/ports/archivers/unzip
 # make install ; make clean

ps2textインストール~
http://softpark.jplaza.com/software/freesoft.html
 # tar zxvf ps2text-0.4.1.tar.z
 # cd ps2text-0.4.1
 # vi Makefile
 ---------------------------------------
 GS      = /usr/local/gnu/bin/gs
 SED     = /bin/sed
         ↓
 GS      = /usr/local/bin/gs
 SED     = /usr/bin/sed
 ---------------------------------------
 # make
 # make install
 # chmod 755 /usr/local/bin/ps2text
 # ln -s /usr/local/bin/ps2text /usr/local/bin/ps2ascii

***フィルタの一覧 [#aa82067c]
http://www.namazu.org/doc/manual.html#doc-filter


*複数のインデックスを作成する場合、更新日・ファイル数・キーワード数の取得スクリプト [#ob5ed9b4]
構成はこんな感じ
 ----indexs(テンプレート)
   |
   |--AAA(インデックス1)
   |
   |--BBB(インデックス2)
   |
   |--CCC(インデックス3)

**スクリプト [#rb974536]
 <?php
 $index_main="/home/matsui/public_html/indexs/NMZ.head.ja";
 $index_master="/home/matsui/public_html/indexs/NMZ.master";
 $index[1]="/home/matsui/public_html/indexs/AAA/NMZ.head.ja";
 $index[2]="/home/matsui/public_html/indexs/BBB/NMZ.head.ja";
 $index[3]="/home/matsui/public_html/indexs/CCC/NMZ.head.ja";
 $file_all =0;
 $key_all=0;
 $tmp=0;
 
 foreach($index as $k => $v){
        exec("grep '<!-- DATE -->' ".$v." |awk '{print $5}'",$arr[date]);
        exec("grep '<!-- FILE -->' ".$v." |awk '{print $4}'",$arr[file]);
        exec("grep '<!-- KEY -->' ".$v." |awk '{print $4}'",$arr[key]);
        $index_date[date][$k] = $arr[date][0];
        $index_date[file][$k] = $arr[file][0];
        $index_date[key][$k] = $arr[key][0];
        unset($arr);
 }
 for($i=1;$i<=count($index);$i++){
        $file_all += ereg_replace('\,','',$index_date[file][$i]);
        $key_all += ereg_replace('\,','',$index_date[key][$i]);
 
        if($index_date[date][$i] > $tmp)$date_last = $index_date[date][$i];
 }
 
 //echo $file_all."\n";
 //echo $key_all;
 
 $file=file($index_master);
 $fp = fopen($index_main, "w+");
 
 foreach($file as $val){
   if(ereg('<!-- DATE -->',$val)){
     foreach($index as $k => $v)
         $val = ereg_replace('index_'.$k,$index_date[date][$k],$val);
   }
   if(ereg('<!-- FILE -->',$val)){
     foreach($index as $k => $v)
         $val = ereg_replace('index_'.$k,$index_date[file][$k],$val);
   }
   if(ereg('<!-- KEY -->',$val)){
     foreach($index as $k => $v)
         $val = ereg_replace('index_'.$k,$index_date[key][$k],$val);
   }
   if(ereg('<!-- FILE --> index_file_all <!-- FILE -->',$val))
        $val = ereg_replace('index_file_all',trim($file_all),$val);
   if(ereg('<!-- KEY --> index_key_all <!-- KEY -->',$val))
        $val = ereg_replace('index_key_all',trim($key_all),$val);
   if(ereg('<!-- DATE --> index_date_last <!-- DATE -->',$val))
        $val = ereg_replace('index_date_last',trim($date_last),$val);   
   fwrite($fp,$val);
 }
 fclose($fp);
 ?>

**NMZ.master [#adb16bb9]
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
         "http://www.w3.org/TR/html4/strict.dtd">
 <html>
 <head>
 <!-- LINK-REV-MADE -->
 <link rev="made" href="mailto:foobar@namazu.org">
 <!-- LINK-REV-MADE -->
 <title>Namazu: a Full-Text Search Engine</title>
 <style type="text/css"><!--
   strong.keyword { color: Red; }
   p.example      { text-indent: 1em; 
                    color: Navy;
                   font-weight: bold;
                    font-family: monospace; }
   code           { color: Navy;
                    font-family: monospace; }
   code.example   { color: Navy;
                   font-weight: bold;
                    font-family: monospace; }
   code.operator  { color: Navy;
                    font-family: monospace; 
                   font-weight: bold; }
 --></style>
 </head>
 <body lang="ja">
 <h1>Namazu による全文検索システム</h1>
 <p>
 現在、<!-- FILE --> index_file_all <!-- FILE --> の文書がインデックス化され、
 <!-- KEY --> index_key_all <!-- KEY --> 個のキーワードが登録されています。
 </p>
 <p>
 </p>
 <hr>
 <form method="get" action="{cgi}">
 <p>
 <strong>検索式:</strong> 
 <input type="text" name="query" size="40">
 <input type="submit" name="submit" value="Search!">
 <input type="hidden" name="whence" value="0">
 <!-- <input type="hidden" name="idxname" value="foobar"> -->
 <a href="{cgi}">[検索方法]</a>
 </p>
 <p>
 <strong>表示件数:</strong>
 <select name="max">
 <option value="10">10</option>
 <option selected value="20">20</option>
 <option value="30">30</option>
 <option value="50">50</option>
 <option value="100">100</option>
 </select>
 <strong>表示形式:</strong>
 <select name="result">
 <option selected value="normal">標準</option>
 <option value="short">簡潔</option>
 </select>
 <strong>ソート:</strong>
 <select name="sort">
 <option selected value="score">スコア</option>
 <option value="date:late">日付 (新しい順)</option>
 <option value="date:early">日付 (古い順)</option>
 <option value="field:subject:ascending">題名 (昇順)</option>
 <option value="field:subject:descending">題名 (降順)</option>
 <option value="field:from:ascending">著者 (昇順)</option>
 <option value="field:from:descending">著者 (降順)</option>
 <option value="field:size:ascending">サイズ (昇順)</option>
 <option value="field:size:descending">サイズ (降順)</option>
 <option value="field:uri:ascending">URI (昇順)</option>
 <option value="field:uri:descending">URI (降順)</option>
 </select>
 </p>
 <p>
 <strong>検索対象:</strong>
 <ul>
 <li><input type="checkbox" name="idxname" value="AAA" checked>AAA
  ファイル:<!-- FILE --> index_1 <!-- FILE -->個
  キーワード:<!-- KEY --> index_1 <!-- KEY -->個
  インデックスの最終更新日: <!-- DATE --> index_1 <!-- DATE -->
 </li>
 <li><input type="checkbox" name="idxname" value="BBB">BBB
  ファイル:<!-- FILE --> index_2 <!-- FILE -->個
  キーワード:<!-- KEY --> index_2 <!-- KEY -->個
  インデックスの最終更新日: <!-- DATE --> index_2 <!-- DATE -->
 </li>
 <li><input type="checkbox" name="idxname" value="CCC">CCC 
  ファイル:<!-- FILE --> index_3 <!-- FILE -->個
  キーワード:<!-- KEY --> index_3 <!-- KEY -->個
  インデックスの最終更新日: <!-- DATE --> index_3 <!-- DATE -->
 </li>
 </ul>
 </p>
 </form>

**フォルダ名などの文字化け [#r8807c8c]
windowsの共有フォルダをマウントすると、特定文字「〜」などが「??」で表示される。~
&color(Red){mknmzでインデックスが作成できない場合。EUC-JP-MSを使ってみるとよいかも};
 # mount_smbfs -E euc-jp-ms:cp932 -I 172.16.8.51 //ADMINISTRATOR@TEST-WIN-SERVER/desktop /mnt

[[EUC-JP-MSを使えるようにする>FreeBSD/Samba3#B]]

**参考ヒット数を表示しない [#rdadae62]
テンプレートファイル (NMZ.head もしくは NMZ.head.ja) の Form の中で、

 <input type="hidden" name="reference" value="off">

という 1 行を追加すると、参考ヒット数は表示されなくなります。

**xlhtmlのバグ [#neb39871]
65536行目でセルをマージしてあると無限ループしてしまう。

解消バージョン

http://www.flateight.com/modules/mydownloads/viewcat.php?cid=1

***Namazuのxlhtmlのパッチ。(xlhtml-0.5.1にパッチをあてる) (^-^ [#f55c5305]

[[パッチとxlhtml-0.5.1>http://www.asahi-net.or.jp/~nd2s-icys/xlhtml.html]]

 $ ll
 -rwxr--r--    1 matsui   matsui       5749  6 30 13:45 xlhtml-0.5.1-patch-03
 -rwxr--r--    1 matsui   matsui     263933  6 30 13:45 xlhtml-0.5.1.tar.gz
 $ tar zxvf xlhtml-0.5.1.tar.gz
 $ cd xlhtml
 $ patch -p1 < ../xlhtml-0.5.1-patch-03
 $ ./configure 
 $ make
 # make install

・パッチを当てると、デフォルトのものとサイズが変わっている事を確認。
 $ ll xlhtml/xlhtml
 -rwxrwxr-x    1 matsui   matsui     129772  6 30 14:02 xlhtml/xlhtml
 $ ll /usr/local/bin/xlhtml 
 -rwxr-xr-x    1 root     wheel      129537  4  6 13:51 /usr/local/bin/xlhtml


**参考ページ [#tf5af016]
kakasi(KAKASI)とchasen(茶筌)とMeCab(和布蕪)の比較ができるサイト~
http://nomadscafe.jp/test/keitaiso/index.cgi