Mailing List Archive

r3692 - in trunk: c_src/KinoSearch/Analysis perl/lib perl/lib/KinoSearch/Analysis
Author: creamyg
Date: 2008-08-02 13:45:43 -0700 (Sat, 02 Aug 2008)
New Revision: 3692

Modified:
trunk/c_src/KinoSearch/Analysis/Stemmer.c
trunk/perl/lib/KinoSearch.pm
trunk/perl/lib/KinoSearch/Analysis/Stemmer.pm
Log:
Change lazy-load strategy for Lingua::Stem::Snowball and Lingua::StopWords so
that things will work via pure-C constructors.


Modified: trunk/c_src/KinoSearch/Analysis/Stemmer.c
===================================================================
--- trunk/c_src/KinoSearch/Analysis/Stemmer.c 2008-08-02 20:25:44 UTC (rev 3691)
+++ trunk/c_src/KinoSearch/Analysis/Stemmer.c 2008-08-02 20:45:43 UTC (rev 3692)
@@ -4,6 +4,7 @@
#include "KinoSearch/Analysis/Stemmer.h"
#include "KinoSearch/Analysis/Token.h"
#include "KinoSearch/Analysis/TokenBatch.h"
+#include "KinoSearch/Util/Native.h"

/* Declare Snowball interface -- since it's so simple we don't need to include
* the header.
@@ -37,6 +38,7 @@
lang_buf[0] = tolower(CB_Code_Point_At(language, 0));
lang_buf[1] = tolower(CB_Code_Point_At(language, 1));
lang_buf[2] = '\0';
+ Native_callback(self, "lazy_load_snowball", 0);
self->snowstemmer = sb_stemmer_new(lang_buf, "UTF_8");
if (!self->snowstemmer)
CONFESS("Can't find a Snowball stemmer for %o", language);

Modified: trunk/perl/lib/KinoSearch/Analysis/Stemmer.pm
===================================================================
--- trunk/perl/lib/KinoSearch/Analysis/Stemmer.pm 2008-08-02 20:25:44 UTC (rev 3691)
+++ trunk/perl/lib/KinoSearch/Analysis/Stemmer.pm 2008-08-02 20:45:43 UTC (rev 3692)
@@ -7,7 +7,7 @@
__AUTO_XS__

{ "KinoSearch::Analysis::Stemmer" => {
- make_constructors => ["_new"],
+ make_constructors => ["new"],
},
}


Modified: trunk/perl/lib/KinoSearch.pm
===================================================================
--- trunk/perl/lib/KinoSearch.pm 2008-08-02 20:25:44 UTC (rev 3691)
+++ trunk/perl/lib/KinoSearch.pm 2008-08-02 20:45:43 UTC (rev 3692)
@@ -172,10 +172,6 @@
if ( defined $args{analyzers} ) {
$args{analyzers} = to_kino( $args{analyzers} );
}
- else {
- require Lingua::Stem::Snowball;
- require Lingua::StopWords;
- }

my $self = $either->_new(%args);
# Cache analyzers as Perl array as a lame-o optimization until
@@ -205,12 +201,7 @@

{
package KinoSearch::Analysis::Stemmer;
-
- sub new {
- my $either = shift;
- require Lingua::Stem::Snowball;
- return $either->_new(@_);
- }
+ sub lazy_load_snowball { require Lingua::Stem::Snowball }
}

{
@@ -219,7 +210,6 @@

sub new {
my ( $either, %args ) = @_;
- require Lingua::StopWords;
if ( defined $args{stoplist} ) {
confess("stoplist must be a hashref")
unless reftype( $args{stoplist} ) eq 'HASH';
@@ -230,6 +220,7 @@

sub gen_stoplist {
my ( undef, $language ) = @_;
+ require Lingua::StopWords;
$language = lc($language);
if ( $language =~ /^(?:da|de|en|es|fi|fr|it|nl|no|pt|ru|sv)$/ ) {
my $stoplist


_______________________________________________
kinosearch-commits mailing list
kinosearch-commits@rectangular.com
http://www.rectangular.com/mailman/listinfo/kinosearch-commits