Memo/Linux/HyperEstraier

http://dexlab.net/pukiwiki/index.php?Memo%2FLinux%2FHyperEstraier
 

全文検索システム Hyper Estraier

  • http://fallabs.com/hyperestraier/
    • LGPL
    • インデックスを使った高速な検索ができます。
    • 大量の文書のインデックスを短時間で作成できます。
    • N-gram方式による漏れのない検索ができます。
    • 形態素解析とN-gramのハイブリッド機構で検索精度を向上させます。
    • フレーズ検索や正規表現検索や属性検索や類似検索をサポートします。
    • 世界各国の言語が扱えます。
    • 対象文書の所在や形式に依存しません。
    • 賢いWebクローラが付属しています。
    • ライブラリとして各種製品に組み込めます。
    • P2P連携機能をサポートします。
  • Namazuと比べて
    • 短い文字でも一致する
    • インデックスの生成が早い
    • cgiが複数インデックスに非対応なので、複数ドキュメントを扱う場合にはジャンルを付与する

phpマニュアルの場合

  • ダウンロード
    1. wget http://jp2.php.net/get/php_manual_ja.tar.gz/from/jp.php.net/mirror
    2. tar xvfz php_manual_ja.tar.gz
    3. mv php-chunked-xhtml php
    4. rm php_manual_ja.tar.gz
    5.  
    6. estcmd gather -il ja -cl -sd -cm -kn 32 -um -aa @genre php casket php
    7. vim estseek.conf
    ----
    genrecheck: php{{!}}PHP
    ----

フレーム分割

  • cssを指定して綺麗に表示
    1. perl -p -i -e 's#</head>#\n<link rel="stylesheet" href="../css/man.css" type="text/css">\n</head>#ig' *.html
  • フレーム分割
    1. cp index.html _left.html
    2. mv index.html _index.html
    3.  
    4. perl -00 -p -i -e 's#<a[\n\r\s]+href#<a target="right" href#ig' _left.html
    5.  
    6. perl -00 -p -i -e 's#(<body[^>]+>)#$1
    7. <form action="../estseek.cgi" method="post" target="right">
    8. <input type="text" name="phrase" id="phrase" size="20" />
    9. <input type="submit" value="検索">
    10.  | <a href="../index.html" target="_top" >back</a>
    11. </form>
    12. #i' _left.html
    13.  
    14. cat > index.html << 'EOS'
    15. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
    16. <html xmlns="http://www.w3.org/1999/xhtml">
    17. <head>
    18. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
    19. <title>Manual</title>
    20. </head>
    21. <frameset cols="350,*">
    22.   <frame src="_left.html" name="left"/>
    23.   <frame src="_index.html" name="right"/>
    24.   <noframes>
    25.     <body>
    26.     <a href="_index.html">Frames are disabled. Click here to go to the main page.</a>
    27.     </body>
    28.   </noframes>
    29. </frameset>
    30. </html>
    31. EOS

tips

  • cgiへリダイレクト
    1. cat > index.html << 'EOS'
    2. <html>
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
    5. <meta http-equiv="refresh" content="0; url=estseek.cgi" />
    6. </head>
    7. <body>
    8. <a href="estseek.cgi">move</a>
    9. </body>
    10. </html>
    11. EOS
  • 外部からインデックスファイル他にアクセスできないように。
    1. cat > casket/.htaccess << 'EOS'
    2. order deny,allow
    3. deny from all
    4. EOS
    5.  
    6. cat > .htaccess << 'EOS'
    7. order allow,deny
    8. allow from all
    9. <Files ~ "^(estseek\.conf|estseek\.help|estseek\.tmpl|estseek\.top)$">
    10.   deny from all
    11. </Files>
    12. EOS
  • その他
    1. # ファイル名に日本語を含む場合、「-pc 文字コード」オプションを付ける
    2. estcmd gather -il ja -pc CP932 -sd index /home/user/public_html/est/casket
    3. estcmd gather -il ja -pc EUC-JP -sd index /home/user/public_html/est/casket
    4. estcmd gather -il ja -pc UTF-8 -sd index /home/user/public_html/est/casket
    5.  
    6. # インデックスの最適化
    7. estcmd optimize /home/user/public_html/est/casket
    8.  
    9. # 削除文書の反映
    10. estcmd purge -cl /home/user/public_html/est/casket
    11.  
    12. # インデックスの分割のマージ
    13. estcmd merge idx1 idx2 # idx2をidx1にマージ

複数ドキュメントのジャンルによる絞り込み

複数のインデックスを横断的に検索する機能はない。
よって、異なる種類のドキュメントを一つのインデックスにいれ、ジャンル属性を付けて区別する事ができる。

  • インデックスの作成
    1. cd ~/public_html/est/
    2. mkdir casket
    3. estcmd create -attr @genre str casket
    4. estcmd gather -il ja -cl -sd -cm -kn 32 -um -aa @genre mail casket /home/user/public_html/est/mail
    5. estcmd gather -il ja -cl -sd -cm -kn 32 -um -aa @genre web casket /home/user/public_html/est/web
  • 設定ファイル。下記を追加する事で、cgiにチェックボックスが表示される
    vi estseek.conf
    ----
    genrecheck: mail{{!}}メール
    genrecheck: web{{!}}Webコンテンツ
    ----

インストール

  • CentOS5.x向け。Vine Linuxのsrpmをリビルドして使える
  • rpm
    1. mkdir rpm
    2. cd rpm
    3. mkdir {BUILD,SRPMS,SPECS,SOURCES,RPMS}
    4. echo "%_topdir $HOME/rpm" > ~/.rpmmacros
  • libiconv EUC-JPが使えればok
    1. $ iconv -l | egrep -i '(-31j|-ms)'
    2. EUC-JP-MS//
    3. EUCJP-MS//
    4. WINDOWS-31J//
  • qdbm
    1. cd rpm
    2. wget http://ftp.yz.yamagata-u.ac.jp/pub/linux/Vine/VineSeed/SRPMS.plus/qdbm-1.8.77-3vl6.src.rpm
    3. rpm -ivh qdbm-1.8.77-3vl6.src.rpm
    4. rpmbuild -ba SPECS/qdbm-vl.spec
    5. sudo rpm -ivh  RPMS/i386/qdbm*
  • mecab
    1. cd rpm
    2. wget http://ftp.yz.yamagata-u.ac.jp/pub/linux/Vine/VineSeed/SRPMS.plus/mecab-0.98-1vl6.src.rpm
    3. wget http://ftp.yz.yamagata-u.ac.jp/pub/linux/Vine/VineSeed/SRPMS.plus/mecab-ipadic-2.7.0.20070801-3vl6.src.rpm
    4. rpm -ivh mecab-0.98-1vl6.src.rpm mecab-ipadic-2.7.0.20070801-3vl6.src.rpm
    5. rpmbuild -ba SPECS/mecab-vl.spec
    6. sudo rpm -ivh RPMS/i386/mecab-*
    7. rpmbuild -ba SPECS/mecab-ipadic-vl.spec
    8. sudo rpm -ivh RPMS/i386/mecab-ipadic-*
  • hyperestraier
    1. cd rpm
    2. wget http://ftp.yz.yamagata-u.ac.jp/pub/linux/Vine/VineSeed/SRPMS.plus/hyperestraier-1.4.13-5vl6.src.rpm
    3. rpm -ivh hyperestraier-1.4.13-5vl6.src.rpm
    4. rpmbuild -ba SPECS/hyperestraier-vl.spec
    5. sudo rpm -ivh RPMS/i386/hyperestraier*
  • cgiは以下にインストールされる
    1. /usr/libexec/estseek.cgi
  • 設定ファイルコピー元
    1. 英語: /usr/share/hyperestraier/
    2. 日本語: /usr/share/hyperestraier/locale/ja/

フィルタのインストール

  • PDF -> HTML
    1. sudo yum install pdftohtml
  • MSOffice(ワード、エクセル、パワーポイント)->HTML
    1. cd rpm
    2. wget http://ftp.yz.yamagata-u.ac.jp/pub/linux/Vine/VineSeed/SRPMS.plus/xlHtml-0.5-2vl5.src.rpm
    3. rpm -ivh xlHtml-0.5-2vl5.src.rpm
    4. rpmbuild -ba SPECS/xlhtml.spec
    5. sudo rpm -ivh RPMS/i386/xlHtml-*
    6.  
    7. sudo yum install libpng-devel libjpeg-devel  libwmf-devel libgsf-devel
    8. wget http://ftp.yz.yamagata-u.ac.jp/pub/linux/Vine/VineSeed/SRPMS.plus/wv-1.2.4-3vl6.src.rpm
    9. rpm -ivh wv-1.2.4-3vl6.src.rpm
    10. rpmbuild -ba SPECS/wv-vl.spec
    11. sudo rpm -ivh RPMS/i386/wv-*
  • OpenDocument? & Office Open XML
  • Hyper Estraier で OpenDocument & Office Open XML を検索対象にする
    1. wget -O estfx_ooo2xml.sh "http://public.blu.livefilestore.com/y1pEV2iDvw0DLU47rQuhlZDSuQNZwWc6JLWmiUd10_E3q7TpAVbTHusdYYDsNTKTHZysgnLW8mcF_8MqCKQYFdx6Q/estfx_ooo2xml.sh?download&psid=1"
    2. wget -O estfx_ooxml2xml.sh "http://public.blu.livefilestore.com/y1pEV2iDvw0DLXkKexiso-H4cm23ABdpQx7gG_3_DcxGKCJbY-qpOWyap5yYo5C0HO_C4uzdJ9u6PcyIVXQ3m4A1w/estfx_ooxml2xml.sh?download&psid=1"
    3.  
    4. sudo mv estfx_* /usr/share/hyperestraier/filter/
    5. sudo chmod 755 /usr/share/hyperestraier/filter/estfx_*.sh

インデックス作成

  • apacheのマニュアルを検索する例
  • cgiを実行できるようにしておく
    1. sudo vi /etc/httpd/conf/httpd.conf
    2. ----
    3. AddHandler cgi-script .cgi
    4.  
    5. <IfModule mod_userdir.c>
    6.     UserDir public_html
    7. </IfModule>
    8.  
    9. <Directory /home/*/public_html>
    10.     AllowOverride All
    11.     Options -Indexes FollowSymLinks ExecCGI
    12. </Directory>
    13. ----
    14. sudo /sbin/service httpd graceful
  • 検索cgi設置
    1. mkdir ~/public_html/est/casket
    2. mkdir ~/public_html/est/
    3. cd ~/public_html/est/
    4. cp /usr/libexec/estseek.cgi .
    5. cp /usr/share/hyperestraier/locale/ja/estseek.* .
  • 設定変更
    vi estseek.conf
    ----
    indexname: /home/user/public_html/est/casket
    ...
    replace: ^file:///home/user/public_html/est/{{!}}http://localhost/~user/est/
    ...
    ----
  • インデックス作成
    1. estcmd gather -il ja -cl -sd -cm -kn 32 -um /home/user/public_html/est/casket "/home/user/public_html/est/"
  • 「 suexec policy violation」エラー
    1. tail -f /var/log/httpd/suexec.log

添付ファイル: fileest.zip 1367件 [詳細] fileestfx_ooxml2xml.sh 1231件 [詳細] fileestfx_ooo2xml.sh 1233件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-12-10 (金) 05:47:31 (2694d)