FreeBSD/Namazu
Namazu †
ソース:
http://www.namazu.org/index.html.ja
インストール †
$ cd /usr/ports/japanese/namazu2 $ make install clean
インストール(ソース) †
$ tar zxvf namazu-2.0.19.tar.gz $ cd namazu-2.0.19 $ ./configure $ make # make install
「mknmz」の設定 †
# 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」の設定 †
# 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」によるインデックスの作成 †
$ export LANG=ja_JP.eucJP $ export LC_ALL=ja_JP.eucJP $ mknmz -O /usr/local/var/namazu/index/test /home/www/http/
「namazu」による全文検索 †
$ namazu test
Webページからの全文検索 †
CGIファイルのコピー †
$ cp -p /usr/local/libexec/namazu.cgi /home/www/root_http/
「.namazurc」の作成 †
$ cp -p /usr/local/etc/namazu/namazurc /home/www/root_http/.namazurc
「.namazurc」への追記 †
Replace /home/www/root_http http://www.kishiro.com
フィルタのインストール †
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
フィルタの一覧 †
http://www.namazu.org/doc/manual.html#doc-filter
複数のインデックスを作成する場合、更新日・ファイル数・キーワード数の取得スクリプト †
構成はこんな感じ
----indexs(テンプレート) | |--AAA(インデックス1) | |--BBB(インデックス2) | |--CCC(インデックス3)
スクリプト †
<?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 †
<!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>
フォルダ名などの文字化け †
windowsの共有フォルダをマウントすると、特定文字「〜」などが「??」で表示される。
mknmzでインデックスが作成できない場合。EUC-JP-MSを使ってみるとよいかも
# mount_smbfs -E euc-jp-ms:cp932 -I 172.16.8.51 //ADMINISTRATOR@TEST-WIN-SERVER/desktop /mnt
参考ヒット数を表示しない †
テンプレートファイル (NMZ.head もしくは NMZ.head.ja) の Form の中で、
<input type="hidden" name="reference" value="off">
という 1 行を追加すると、参考ヒット数は表示されなくなります。
xlhtmlのバグ †
65536行目でセルをマージしてあると無限ループしてしまう。
解消バージョン
http://www.flateight.com/modules/mydownloads/viewcat.php?cid=1
Namazuのxlhtmlのパッチ。(xlhtml-0.5.1にパッチをあてる) †
$ 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
参考ページ †
kakasi(KAKASI)とchasen(茶筌)とMeCab(和布蕪)の比較ができるサイト
http://nomadscafe.jp/test/keitaiso/index.cgi