[prev in list] [next in list] [prev in thread] [next in thread]
List: kinosearch-commits
Subject: [Kinosearch-commits] r2493 - in trunk: c_src/KinoSearch/Index
From: marvin () rectangular ! com (marvin () rectangular ! com)
Date: 2007-08-08 13:21:55
Message-ID: mailman.3.1186604515.555.kinosearch-commits () rectangular ! com
[Download RAW message or body]
Author: root
Date: 2007-08-08 13:21:53 -0700 (Wed, 08 Aug 2007)
New Revision: 2493
Modified:
trunk/c_src/KinoSearch/Index/Lexicon.c
trunk/c_src/KinoSearch/Index/Lexicon.h
trunk/c_src/KinoSearch/Index/MultiLexicon.c
trunk/c_src/KinoSearch/Index/MultiLexicon.h
trunk/c_src/KinoSearch/Index/SegLexicon.c
trunk/c_src/KinoSearch/Index/SegLexicon.h
trunk/perl/lib/KinoSearch/Index/Lexicon.pm
trunk/perl/lib/KinoSearch/Index/SegLexicon.pm
trunk/perl/t/217-multi_lexicon.t
Log:
Implement Lex_Get_Size across all Lexicon subclasses. Patch provided by Chris
Nandor.
Modified: trunk/c_src/KinoSearch/Index/Lexicon.c
===================================================================
--- trunk/c_src/KinoSearch/Index/Lexicon.c 2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/c_src/KinoSearch/Index/Lexicon.c 2007-08-08 20:21:53 UTC (rev 2493)
@@ -28,6 +28,13 @@
}
i32_t
+Lex_get_size(Lexicon *self)
+{
+ ABSTRACT_DEATH(self, "Get_Size");
+ UNREACHABLE_RETURN(i32_t);
+}
+
+i32_t
Lex_get_term_num(Lexicon *self)
{
ABSTRACT_DEATH(self, "Get_Term_Num");
Modified: trunk/c_src/KinoSearch/Index/Lexicon.h
===================================================================
--- trunk/c_src/KinoSearch/Index/Lexicon.h 2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/c_src/KinoSearch/Index/Lexicon.h 2007-08-08 20:21:53 UTC (rev 2493)
@@ -39,6 +39,10 @@
kino_Lex_reset(kino_Lexicon* self);
KINO_METHOD("Kino_Lex_Reset");
+chy_i32_t
+kino_Lex_get_size(kino_Lexicon *self);
+KINO_METHOD("Kino_Lex_Get_Size");
+
/* Pretend that the iterator is an array, and return the index of the current
* element. May return invalid results if the iterator is not in a valid
* state.
Modified: trunk/c_src/KinoSearch/Index/MultiLexicon.c
===================================================================
--- trunk/c_src/KinoSearch/Index/MultiLexicon.c 2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/c_src/KinoSearch/Index/MultiLexicon.c 2007-08-08 20:21:53 UTC (rev 2493)
@@ -172,6 +172,7 @@
ints[ PList_Get_Doc_Num(plist) ] = self->term_num;
}
}
+ self->size = self->term_num;
term_texts = REALLOCATE(term_texts, num_index_terms, ByteBuf*);
REFCOUNT_DEC(self->lex_cache);
@@ -229,6 +230,14 @@
} while (MultiLex_Next(self));
}
+i32_t
+MultiLex_get_size(MultiLexicon *self)
+{
+ if (self->lex_cache == NULL)
+ CONFESS("Can't call MultiLex_Size unless cache filled");
+ return self->size;
+}
+
i32_t
MultiLex_get_term_num(MultiLexicon *self)
{
Modified: trunk/c_src/KinoSearch/Index/MultiLexicon.h
===================================================================
--- trunk/c_src/KinoSearch/Index/MultiLexicon.h 2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/c_src/KinoSearch/Index/MultiLexicon.h 2007-08-08 20:21:53 UTC (rev 2493)
@@ -23,6 +23,7 @@
struct kino_PriorityQueue *lex_q;
struct kino_VArray *seg_lexicons;
struct kino_LexCache *lex_cache;
+ chy_i32_t size;
chy_i32_t term_num;
};
@@ -48,6 +49,10 @@
KINO_METHOD("Kino_MultiLex_Reset");
chy_i32_t
+kino_MultiLex_get_size(kino_MultiLexicon *self);
+KINO_METHOD("Kino_MultiLex_Get_Size");
+
+chy_i32_t
kino_MultiLex_get_term_num(kino_MultiLexicon *self);
KINO_METHOD("Kino_MultiLex_Get_Term_Num");
Modified: trunk/c_src/KinoSearch/Index/SegLexicon.c
===================================================================
--- trunk/c_src/KinoSearch/Index/SegLexicon.c 2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/c_src/KinoSearch/Index/SegLexicon.c 2007-08-08 20:21:53 UTC (rev 2493)
@@ -160,6 +160,12 @@
}
i32_t
+SegLex_get_size(SegLexicon *self)
+{
+ return self->size;
+}
+
+i32_t
SegLex_get_term_num(SegLexicon *self)
{
return self->term_num;
Modified: trunk/c_src/KinoSearch/Index/SegLexicon.h
===================================================================
--- trunk/c_src/KinoSearch/Index/SegLexicon.h 2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/c_src/KinoSearch/Index/SegLexicon.h 2007-08-08 20:21:53 UTC (rev 2493)
@@ -73,6 +73,10 @@
KINO_METHOD("Kino_SegLex_Get_Field_Num");
chy_i32_t
+kino_SegLex_get_size(kino_SegLexicon *self);
+KINO_METHOD("Kino_SegLex_Get_Size");
+
+chy_i32_t
kino_SegLex_get_term_num(kino_SegLexicon *self);
KINO_METHOD("Kino_SegLex_Get_Term_Num");
Modified: trunk/perl/lib/KinoSearch/Index/Lexicon.pm
===================================================================
--- trunk/perl/lib/KinoSearch/Index/Lexicon.pm 2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/perl/lib/KinoSearch/Index/Lexicon.pm 2007-08-08 20:21:53 UTC (rev 2493)
@@ -47,6 +47,13 @@
Kino_Lex_Reset(self);
chy_i32_t
+get_size(self);
+ kino_Lexicon *self;
+CODE:
+ RETVAL = Kino_Lex_Get_Size(self);
+OUTPUT: RETVAL
+
+chy_i32_t
get_term_num(self);
kino_Lexicon *self;
CODE:
Modified: trunk/perl/lib/KinoSearch/Index/SegLexicon.pm
===================================================================
--- trunk/perl/lib/KinoSearch/Index/SegLexicon.pm 2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/perl/lib/KinoSearch/Index/SegLexicon.pm 2007-08-08 20:21:53 UTC (rev 2493)
@@ -68,16 +68,12 @@
_set_or_get(self, ...)
kino_SegLexicon *self;
ALIAS:
- get_size = 2
get_term_info = 4
is_index = 10
PPCODE:
{
START_SET_OR_GET_SWITCH
- case 2: retval = newSViv(self->size);
- break;
-
case 4: retval = kobj_to_pobj(Kino_SegLex_Get_Term_Info(self));
break;
Modified: trunk/perl/t/217-multi_lexicon.t
===================================================================
--- trunk/perl/t/217-multi_lexicon.t 2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/perl/t/217-multi_lexicon.t 2007-08-08 20:21:53 UTC (rev 2493)
@@ -18,7 +18,7 @@
sub analyzer { KinoSearch::Analysis::Tokenizer->new }
package main;
-use Test::More tests => 49;
+use Test::More tests => 56;
use File::Spec::Functions qw( catfile );
use KinoSearch::Index::MultiLexicon;
@@ -100,6 +100,8 @@
);
isa_ok( $intmap, 'KinoSearch::Util::IntMap' );
+ ok($lexicon->get_size, 'MultiLexicon->get_size');
+
my $term = KinoSearch::Index::Term->new( content => 'j' );
$lexicon->seek($term);
is( $lexicon->get_term->get_text,
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic