Memo/Linux/HyperEstraier

https://dexlab.net:443/pukiwiki/index.php?Memo/Linux/HyperEstraier
 

全文検索システム Hyper Estraier

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

phpマニュアルの場合

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

フレーム分割

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

tips

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

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

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

  • インデックスの作成
    cd ~/public_html/est/
    mkdir casket
    estcmd create -attr @genre str casket
    estcmd gather -il ja -cl -sd -cm -kn 32 -um -aa @genre mail casket /home/user/public_html/est/mail
    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
    mkdir rpm
    cd rpm
    mkdir {BUILD,SRPMS,SPECS,SOURCES,RPMS}
    echo "%_topdir $HOME/rpm" > ~/.rpmmacros
  • libiconv EUC-JPが使えればok
    $ iconv -l | egrep -i '(-31j|-ms)'
    EUC-JP-MS//
    EUCJP-MS//
    WINDOWS-31J//
  • qdbm
    cd rpm
    wget http://ftp.yz.yamagata-u.ac.jp/pub/linux/Vine/VineSeed/SRPMS.plus/qdbm-1.8.77-3vl6.src.rpm
    rpm -ivh qdbm-1.8.77-3vl6.src.rpm
    rpmbuild -ba SPECS/qdbm-vl.spec
    sudo rpm -ivh  RPMS/i386/qdbm*
  • mecab
    cd rpm
    wget http://ftp.yz.yamagata-u.ac.jp/pub/linux/Vine/VineSeed/SRPMS.plus/mecab-0.98-1vl6.src.rpm
    wget http://ftp.yz.yamagata-u.ac.jp/pub/linux/Vine/VineSeed/SRPMS.plus/mecab-ipadic-2.7.0.20070801-3vl6.src.rpm
    rpm -ivh mecab-0.98-1vl6.src.rpm mecab-ipadic-2.7.0.20070801-3vl6.src.rpm
    rpmbuild -ba SPECS/mecab-vl.spec
    sudo rpm -ivh RPMS/i386/mecab-*
    rpmbuild -ba SPECS/mecab-ipadic-vl.spec
    sudo rpm -ivh RPMS/i386/mecab-ipadic-*
  • hyperestraier
    cd rpm
    wget http://ftp.yz.yamagata-u.ac.jp/pub/linux/Vine/VineSeed/SRPMS.plus/hyperestraier-1.4.13-5vl6.src.rpm
    rpm -ivh hyperestraier-1.4.13-5vl6.src.rpm
    rpmbuild -ba SPECS/hyperestraier-vl.spec
    sudo rpm -ivh RPMS/i386/hyperestraier*
  • cgiは以下にインストールされる
    /usr/libexec/estseek.cgi
  • 設定ファイルコピー元
    英語: /usr/share/hyperestraier/
    日本語: /usr/share/hyperestraier/locale/ja/

フィルタのインストール

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

インデックス作成

  • apacheのマニュアルを検索する例
  • cgiを実行できるようにしておく
    sudo vi /etc/httpd/conf/httpd.conf
    ----
    AddHandler cgi-script .cgi
    
    <IfModule mod_userdir.c>
        UserDir public_html
    </IfModule>
    
    <Directory /home/*/public_html>
        AllowOverride All
        Options -Indexes FollowSymLinks ExecCGI
    </Directory>
    ----
    sudo /sbin/service httpd graceful
  • 検索cgi設置
    mkdir ~/public_html/est/casket
    mkdir ~/public_html/est/
    cd ~/public_html/est/
    cp /usr/libexec/estseek.cgi .
    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/
    ...
    ----
  • インデックス作成
    estcmd gather -il ja -cl -sd -cm -kn 32 -um /home/user/public_html/est/casket "/home/user/public_html/est/"
  • 「 suexec policy violation」エラー
    tail -f /var/log/httpd/suexec.log

添付ファイル: fileest.zip 1323件 [詳細] fileestfx_ooxml2xml.sh 1205件 [詳細] fileestfx_ooo2xml.sh 1208件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:38 (9d)