Namazu-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Search::Namazu::Search(date値の取得)
いわきりです
S Okiyama wrote in <00d401c320f2$b22d17e0$23dba8c0@genome7> :
>上記日付はfilterを加工して私がfield検索用に設定しているデータ内の日付。
>その他の内容(summry,title,author...)も同様にfilterにて設定。
>同様にSearch::Namazuもfield情報の値らしきを得られるとの認識で
>使用しております(rankはおまけ)(以下Searchの結果)。
> ( +date:/199[9-9]/ )
>Results:Reference: [ ( +date:/199[9-9]/ ) :11]
>Total 11 docments matching your query.
>
>1.Title:Hyd...............lls.
>Author:Hin...............ke H.
>Date:1052883980
>20,46,12,14,4,103,3,133,0 ->localtime変換結果->データ作成日付
>
>上記Dateに日付データ内日付が入ってほしいのです。
>何かよい方法はありませんか。
ざっと見た感じ、Search::Namazuのbugでは無さそうですが、
検索に、
+date:/(適当な値)/
を使った時に、おかしくなりますね。
sortした際に、docid(libnamazuでの文書管理番号)と対応するdateが
アンマッチしているように思えます。
内部で持つunixtimeでなく、NMZ.result.dateの値を使うための
patchを添付します。
クラス変数
$hlist->sdate // STRING DATE
を追加しました。こちらに、NMZ.result.dateの対応行が入ります。
patchを当てて、本来の$hlist->dateを調べると何故か正しい値に
なっているので、検証すべきは、libnamazuの中にありそうです。
以下、patch
diff -u Search-Namazu-0.92/Namazu.pm Search-Namazu-test/Namazu.pm
--- Search-Namazu-0.92/Namazu.pm Wed Jun 19 19:01:10 2002
+++ Search-Namazu-test/Namazu.pm Fri May 23 17:00:44 2003
@@ -289,7 +289,7 @@
}
sub set {
- my ($self, $score, $uri, $date, $rank, $summary, $title, $author) = @_;
+ my ($self, $score, $uri, $date, $rank, $summary, $title, $author, $sdate) = @_;
$self->{score} = $score;
$self->{uri} = $uri;
$self->{date} = $date;
@@ -297,6 +297,7 @@
$self->{summary} = $summary;
$self->{title} = $title;
$self->{author} = $author;
+ $self->{sdate} = $sdate;
}
sub score {
@@ -362,6 +363,15 @@
$self->{'author'};
}
+sub sdate {
+ my $self = shift;
+ if (@_) {
+ my $sdate = shift;
+ $self->{'sdate'} = $sdate;
+ }
+ $self->{'sdate'};
+}
+
1;
__END__
diff -u Search-Namazu-0.92/Namazu.xs Search-Namazu-test/Namazu.xs
--- Search-Namazu-0.92/Namazu.xs Wed Jun 19 19:01:10 2002
+++ Search-Namazu-test/Namazu.xs Fri May 23 16:55:59 2003
@@ -68,7 +68,7 @@
int i;
AV *retar;
NmzResult hlist;
- char result[4][BUFSIZE];
+ char result[5][BUFSIZE];
qstr = SvPV(query, PL_na);
strcpy(cqstr, qstr);
@@ -81,6 +81,7 @@
nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "summary", result[1]);
nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "title", result[2]);
nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "author", result[3]);
+ nmz_get_field_data(hlist.data[i].idxid, hlist.data[i].docid, "date", result[4]);
ENTER;
SAVETMPS;
PUSHMARK(SP);
@@ -92,6 +93,7 @@
PUSHs(sv_2mortal(newSVpv(result[1], strlen(result[1]))));
PUSHs(sv_2mortal(newSVpv(result[2], strlen(result[2]))));
PUSHs(sv_2mortal(newSVpv(result[3], strlen(result[3]))));
+ PUSHs(sv_2mortal(newSVpv(result[4], strlen(result[4]))));
PUTBACK;
perl_call_method("set", G_DISCARD);
av_push(retar, ohlist);
--
Youichi Iwakiri