Hyper Estraier インストール(3) オリジナル検索エンジンの作成によるとややこしいことしなくてもクローラーとP2Pって連携できる。ちゃんと読んだらクローラガイドにも書いてあった。
というわけでP2Pの設定をしてテストしてみた
use Lingua::JA::TFIDF;
use Search::Estraier;
my $text = q(
* 長い労働時間がより多くの成果を生み出す訳ではない。むしろ仕事と生活をうまくブレンドしたほうが生産性が上がる
* 仕事人間は過度に会社に期待している、会社も期待しているだろうという思い込む
* 生きること(living)と存在していること(existing)は違う
* 働きかたを選べるようになるためには、まず自分のスキルを磨く
* 少子高齢化で人口減少の社会では終身雇用は機能しない
* 効率の良い働きかたの延長線上に豊かな発想は生み出されない、生活にゆとりがないとあたらしいアイデアはうかばない
* 非正規労働者が増えると技能の継承ができないという危機感を抱くひとが増えてくる
o これは経験した
* 現在求められている成果量は長時間残業を前提として決められている
* 時間、人生、自分自身についてのパラダイムがこの問題をつくりだしているのではないだろうか(p.224)
* 足るを知る(Enough is enough)
);
my $calc = Lingua::JA::TFIDF->new;
my $result = $calc->tfidf($text);
my $query_keywords = "[SIMILAR] ";
for (@{$result->list(5)}) {
my($key,$val) = each(%$_);
$query_keywords .= "WITH " . int($val) . " $key ";
}
warn $query_keywords;
my $node = new Search::Estraier::Node(
url => 'http://localhost:1978/node/drkcore',
croak_on_error => 1,
);
# create condition
my $cond = new Search::Estraier::Condition;
# set search phrase
$cond->set_phrase($query_keywords);
my $nres = $node->search($cond, 0);
if (defined($nres)) {
print "Got ", $nres->hits, " results\n";
for my $i ( 0 ... $nres->doc_num - 1 ) {
my $rdoc = $nres->get_doc($i);
if( $rdoc->attr('@uri') =~ /entry/) {
print "URI: ", $rdoc->attr('@uri'),"\n";
print "Title: ", $rdoc->attr('@title'),"\n";
}
}
} else {
die "error: ", $node->status,"\n";
}
実行結果
% perl test.pl
[SIMILAR] WITH 11 働き WITH 10 労働 WITH 8 成果 WITH 8 延長線 WITH 7 少子 at test.pl line 30.
Got 15 results
URI: http://blog.kzfmix.com/entry/1227393133
Title: 「ワークライフシナジー」読んだ
URI: http://blog.kzfmix.com/entry/1222936959
Title: 「発想の道具箱」と「ハイスピード仕事術」
URI: http://blog.kzfmix.com/entry/1226787565
Title: 「革新的ソフトウェア企業の作り方」を読んだ
URI: http://blog.kzfmix.com/entry/1221714188
Title: 系として壊れてきている?
URI: http://blog.kzfmix.com/entry/1221057705
Title: Maybeお仕事モナド
URI: http://blog.kzfmix.com/entry/1226148131
Title: 「あたらしい戦略の教科書」読んだ
あとはモデルに組み込めばOKな感じ。