You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2015/09/12 00:00:39 UTC

[14/16] lucy git commit: Make PolyMatcher ctor bindings take []Matcher.

Make PolyMatcher ctor bindings take []Matcher.

Make ANDMatcher, ORMatcher, and ORScorer constructors take a slice of
Matcher rather than a slice of empty interface.


Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/9cd103c7
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/9cd103c7
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/9cd103c7

Branch: refs/heads/master
Commit: 9cd103c7dfafa7153480789cb28618e4555abebd
Parents: aaf6abb
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Wed Sep 9 18:55:21 2015 -0700
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Wed Sep 9 18:58:22 2015 -0700

----------------------------------------------------------------------
 go/build.go       | 12 ++++++++++++
 go/lucy/search.go | 34 ++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/9cd103c7/go/build.go
----------------------------------------------------------------------
diff --git a/go/build.go b/go/build.go
index 5c84645..7596f7b 100644
--- a/go/build.go
+++ b/go/build.go
@@ -168,6 +168,18 @@ func specClasses(parcel *cfc.Parcel) {
 	orQueryBinding.SetSuppressCtor(true)
 	orQueryBinding.Register()
 
+	andMatcherBinding := cfc.NewGoClass(parcel, "Lucy::Search::ANDMatcher")
+	andMatcherBinding.SetSuppressCtor(true)
+	andMatcherBinding.Register()
+
+	orMatcherBinding := cfc.NewGoClass(parcel, "Lucy::Search::ORMatcher")
+	orMatcherBinding.SetSuppressCtor(true)
+	orMatcherBinding.Register()
+
+	orScorerBinding := cfc.NewGoClass(parcel, "Lucy::Search::ORScorer")
+	orScorerBinding.SetSuppressCtor(true)
+	orScorerBinding.Register()
+
 	bitVecBinding := cfc.NewGoClass(parcel, "Lucy::Object::BitVector")
 	bitVecBinding.SpecMethod("To_Array", "ToArray() []bool")
 	bitVecBinding.Register()

http://git-wip-us.apache.org/repos/asf/lucy/blob/9cd103c7/go/lucy/search.go
----------------------------------------------------------------------
diff --git a/go/lucy/search.go b/go/lucy/search.go
index 0c8dbb2..2785d51 100644
--- a/go/lucy/search.go
+++ b/go/lucy/search.go
@@ -24,6 +24,8 @@ package lucy
 #include "Lucy/Search/Searcher.h"
 #include "Lucy/Search/ANDQuery.h"
 #include "Lucy/Search/ORQuery.h"
+#include "Lucy/Search/ANDMatcher.h"
+#include "Lucy/Search/ORMatcher.h"
 #include "Lucy/Document/HitDoc.h"
 #include "LucyX/Search/MockMatcher.h"
 #include "Clownfish/Blob.h"
@@ -192,6 +194,38 @@ func NewORQuery(children []Query) ORQuery {
 	return WRAPORQuery(unsafe.Pointer(cfObj))
 }
 
+func NewANDMatcher(children []Matcher, sim Similarity) ANDMatcher {
+	simC := (*C.lucy_Similarity)(clownfish.UnwrapNullable(sim))
+	vec := clownfish.NewVector(len(children))
+	for _, child := range children {
+		vec.Push(child)
+	}
+	childrenC := (*C.cfish_Vector)(unsafe.Pointer(vec.TOPTR()))
+	cfObj := C.lucy_ANDMatcher_new(childrenC, simC)
+	return WRAPANDMatcher(unsafe.Pointer(cfObj))
+}
+
+func NewORMatcher(children []Matcher) ORMatcher {
+	vec := clownfish.NewVector(len(children))
+	for _, child := range children {
+		vec.Push(child)
+	}
+	childrenC := (*C.cfish_Vector)(unsafe.Pointer(vec.TOPTR()))
+	cfObj := C.lucy_ORMatcher_new(childrenC)
+	return WRAPORMatcher(unsafe.Pointer(cfObj))
+}
+
+func NewORScorer(children []Matcher, sim Similarity) ORScorer {
+	simC := (*C.lucy_Similarity)(clownfish.UnwrapNullable(sim))
+	vec := clownfish.NewVector(len(children))
+	for _, child := range children {
+		vec.Push(child)
+	}
+	childrenC := (*C.cfish_Vector)(unsafe.Pointer(vec.TOPTR()))
+	cfObj := C.lucy_ORScorer_new(childrenC, simC)
+	return WRAPORScorer(unsafe.Pointer(cfObj))
+}
+
 func newMockMatcher(docIDs []int32, scores []float32) MockMatcher {
 	docIDsconv := NewI32Array(docIDs)
 	docIDsCF := (*C.lucy_I32Array)(unsafe.Pointer(docIDsconv.TOPTR()))