ActivePerl + Search-Namazu PPM のテストプログラム2008年03月17日 13時02分17秒

Windows ActivePerl + Search-Namazu PPM のテストプログラムです。

#!/usr/bin/perl

require 5.008;
use strict;
use Encode;
use Search::Namazu 0.96;


my $QUERY = 'namazu';
my @INDEX = ( 'C:/namazu/var/namazu/index', );
my $EXTERNAL_CHARSET = 'Shift_JIS';


sub codeconv($);

delete $ENV{'LANGUAGE'};
delete $ENV{'LC_ALL'};
delete $ENV{'LC_MESSAGES'};
delete $ENV{'LC_CTYPE'};
delete $ENV{'LANG'};

my @hlists =
    Search::Namazu::Search(
        index => @INDEX,
        query => $QUERY,
        sortMethod => NMZ_SORTBYSCORE,
        sortOrder => NMZ_DESCENDSORT,
        lang => 'ja_JP.eucJP',         # or 'C'
    );

if ($#hlists == 0 && !ref($hlists[0])) {
    print "Error: $hlists[0]\n";
    exit 1;
}

my $docs = $#hlists + 1;
print "Total $docs documents matching your query.\n\n";

my $n = 1;
foreach my $hlist (@hlists) {
    next if (!defined($hlist));

    my $date = localtime($hlist->date);

    printf("%d. %s (score: %d)", $n, codeconv($hlist->title), 
        $hlist->score);
    printf(" (rank: %d)\n", $hlist->rank);
    printf("Author: %s\n", codeconv($hlist->author));
    printf("Date: %s\n", $date);
    printf("%s\n", codeconv($hlist->summary));
    printf("%s\n", codeconv($hlist->uri));
    print "\n";
    $n++;
}

sub codeconv($)
{
    my ($str) = @_;

    Encode::from_to($str, 'EUC-JP', $EXTERNAL_CHARSET)
        if ($EXTERNAL_CHARSET ne 'EUC-JP');

    $str;
}
  • $QUERY に検索式、@INDEX にインデックス(複数指定可)を設定します。
  • コマンドプロンプトから実行すると、検索結果が Shift_JIS で得られます。
C:\> perl search.pl

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://namazu.asablo.jp/blog/2008/03/17/2765374/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。