You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by nw...@apache.org on 2011/12/22 23:29:50 UTC
[lucy-commits] svn commit: r1222495 - in /incubator/lucy/trunk/core/Lucy/Analysis:
EasyAnalyzer.c EasyAnalyzer.cfh
Author: nwellnhof
Date: Thu Dec 22 22:29:50 2011
New Revision: 1222495
URL: http://svn.apache.org/viewvc?rev=1222495&view=rev
Log:
Don't derive EasyAnalyzer from PolyAnalyzer
Make EasyAnalyzer a direct subclass of Analyzer and implement all needed
methods.
Modified:
incubator/lucy/trunk/core/Lucy/Analysis/EasyAnalyzer.c
incubator/lucy/trunk/core/Lucy/Analysis/EasyAnalyzer.cfh
Modified: incubator/lucy/trunk/core/Lucy/Analysis/EasyAnalyzer.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/core/Lucy/Analysis/EasyAnalyzer.c?rev=1222495&r1=1222494&r2=1222495&view=diff
==============================================================================
--- incubator/lucy/trunk/core/Lucy/Analysis/EasyAnalyzer.c (original)
+++ incubator/lucy/trunk/core/Lucy/Analysis/EasyAnalyzer.c Thu Dec 22 22:29:50 2011
@@ -18,7 +18,7 @@
#include "Lucy/Util/ToolSet.h"
#include "Lucy/Analysis/EasyAnalyzer.h"
-#include "Lucy/Analysis/PolyAnalyzer.h"
+#include "Lucy/Analysis/Inversion.h"
#include "Lucy/Analysis/StandardTokenizer.h"
#include "Lucy/Analysis/Normalizer.h"
#include "Lucy/Analysis/SnowballStemmer.h"
@@ -31,13 +31,70 @@ EasyAnalyzer_new(const CharBuf *language
EasyAnalyzer*
EasyAnalyzer_init(EasyAnalyzer *self, const CharBuf *language) {
- VArray *analyzers = VA_new(3);
- VA_Push(analyzers, (Obj*)StandardTokenizer_new());
- VA_Push(analyzers, (Obj*)Normalizer_new(NULL, true, false));
- VA_Push(analyzers, (Obj*)SnowStemmer_new(language));
- PolyAnalyzer_init((PolyAnalyzer*)self, NULL, analyzers);
- DECREF(analyzers);
+ Analyzer_init((Analyzer*)self);
+ self->language = CB_Clone(language);
+ self->tokenizer = StandardTokenizer_new();
+ self->normalizer = Normalizer_new(NULL, true, false);
+ self->stemmer = SnowStemmer_new(language);
return self;
}
+void
+EasyAnalyzer_destroy(EasyAnalyzer *self) {
+ DECREF(self->language);
+ DECREF(self->tokenizer);
+ DECREF(self->normalizer);
+ DECREF(self->stemmer);
+ SUPER_DESTROY(self, EASYANALYZER);
+}
+
+Inversion*
+EasyAnalyzer_transform(EasyAnalyzer *self, Inversion *inversion) {
+ Inversion *inv1 = StandardTokenizer_Transform(self->tokenizer, inversion);
+ Inversion *inv2 = Normalizer_Transform(self->normalizer, inv1);
+ DECREF(inv1);
+ inv1 = SnowStemmer_Transform(self->stemmer, inv2);
+ DECREF(inv2);
+ return inv1;
+}
+
+Inversion*
+EasyAnalyzer_transform_text(EasyAnalyzer *self, CharBuf *text) {
+ Inversion *inv1 = StandardTokenizer_Transform_Text(self->tokenizer, text);
+ Inversion *inv2 = Normalizer_Transform(self->normalizer, inv1);
+ DECREF(inv1);
+ inv1 = SnowStemmer_Transform(self->stemmer, inv2);
+ DECREF(inv2);
+ return inv1;
+}
+
+Hash*
+EasyAnalyzer_dump(EasyAnalyzer *self) {
+ EasyAnalyzer_dump_t super_dump
+ = (EasyAnalyzer_dump_t)SUPER_METHOD(EASYANALYZER, EasyAnalyzer, Dump);
+ Hash *dump = super_dump(self);
+ Hash_Store_Str(dump, "language", 8, (Obj*)CB_Clone(self->language));
+ return dump;
+}
+
+EasyAnalyzer*
+EasyAnalyzer_load(EasyAnalyzer *self, Obj *dump) {
+ EasyAnalyzer_load_t super_load
+ = (EasyAnalyzer_load_t)SUPER_METHOD(EASYANALYZER, EasyAnalyzer, Load);
+ EasyAnalyzer *loaded = super_load(self, dump);
+ Hash *source = (Hash*)CERTIFY(dump, HASH);
+ CharBuf *language
+ = (CharBuf*)CERTIFY(Hash_Fetch_Str(source, "language", 8), CHARBUF);
+ return EasyAnalyzer_init(loaded, language);
+}
+
+bool_t
+EasyAnalyzer_equals(EasyAnalyzer *self, Obj *other) {
+ EasyAnalyzer *const twin = (EasyAnalyzer*)other;
+ if (twin == self) { return true; }
+ if (!Obj_Is_A(other, EASYANALYZER)) { return false; }
+ if (!CB_Equals(twin->language, (Obj*)self->language)) { return false; }
+ return true;
+}
+
Modified: incubator/lucy/trunk/core/Lucy/Analysis/EasyAnalyzer.cfh
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/core/Lucy/Analysis/EasyAnalyzer.cfh?rev=1222495&r1=1222494&r2=1222495&view=diff
==============================================================================
--- incubator/lucy/trunk/core/Lucy/Analysis/EasyAnalyzer.cfh (original)
+++ incubator/lucy/trunk/core/Lucy/Analysis/EasyAnalyzer.cfh Thu Dec 22 22:29:50 2011
@@ -16,12 +16,12 @@
parcel Lucy;
-/** A simple PolyAnalyzer
+/** A simple analyzer chain
*
- * EasyAnalyzer is a PolyAnalyzer consisting of a
+ * EasyAnalyzer is an analyzer chain consisting of a
* L<StandardTokenizer|Lucy::Analysis::StandardTokenizer>, a
* L<Normalizer|Lucy::Analysis::Normalizer>, and a
- * L<SnowballStemmer|Lucy::Analysis::SnowballStemmer>.
+ * L<EasyAnalyzer|Lucy::Analysis::EasyAnalyzer>.
*
* Supported languages:
*
@@ -42,7 +42,12 @@ parcel Lucy;
* tr => Turkish,
*/
class Lucy::Analysis::EasyAnalyzer
- inherits Lucy::Analysis::PolyAnalyzer : dumpable {
+ inherits Lucy::Analysis::Analyzer : dumpable {
+
+ CharBuf *language;
+ StandardTokenizer *tokenizer;
+ Normalizer *normalizer;
+ SnowballStemmer *stemmer;
inert incremented EasyAnalyzer*
new(const CharBuf *language = NULL);
@@ -52,6 +57,24 @@ class Lucy::Analysis::EasyAnalyzer
*/
public inert EasyAnalyzer*
init(EasyAnalyzer *self, const CharBuf *language = NULL);
+
+ public incremented Inversion*
+ Transform(EasyAnalyzer *self, Inversion *inversion);
+
+ public incremented Inversion*
+ Transform_Text(EasyAnalyzer *self, CharBuf *text);
+
+ public incremented Hash*
+ Dump(EasyAnalyzer *self);
+
+ public incremented EasyAnalyzer*
+ Load(EasyAnalyzer *self, Obj *dump);
+
+ public bool_t
+ Equals(EasyAnalyzer *self, Obj *other);
+
+ public void
+ Destroy(EasyAnalyzer *self);
}