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:31 UTC
[06/16] lucy git commit: MockMatcher Go ctor binding.
MockMatcher Go ctor binding.
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/a7aa7791
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/a7aa7791
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/a7aa7791
Branch: refs/heads/master
Commit: a7aa779141065a2964a70357d746522ae231d0aa
Parents: 2b8b632
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Wed Aug 12 16:58:36 2015 -0700
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Wed Sep 9 18:25:23 2015 -0700
----------------------------------------------------------------------
go/build.go | 4 ++++
go/lucy/search.go | 25 +++++++++++++++++++++++++
go/lucy/search_test.go | 19 +++++++++++++++++++
3 files changed, 48 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy/blob/a7aa7791/go/build.go
----------------------------------------------------------------------
diff --git a/go/build.go b/go/build.go
index 828a79b..5c84645 100644
--- a/go/build.go
+++ b/go/build.go
@@ -171,6 +171,10 @@ func specClasses(parcel *cfc.Parcel) {
bitVecBinding := cfc.NewGoClass(parcel, "Lucy::Object::BitVector")
bitVecBinding.SpecMethod("To_Array", "ToArray() []bool")
bitVecBinding.Register()
+
+ mockMatcherBinding := cfc.NewGoClass(parcel, "LucyX::Search::MockMatcher")
+ mockMatcherBinding.SetSuppressCtor(true)
+ mockMatcherBinding.Register()
}
func build() {
http://git-wip-us.apache.org/repos/asf/lucy/blob/a7aa7791/go/lucy/search.go
----------------------------------------------------------------------
diff --git a/go/lucy/search.go b/go/lucy/search.go
index 8d18ea9..0c8dbb2 100644
--- a/go/lucy/search.go
+++ b/go/lucy/search.go
@@ -25,8 +25,16 @@ package lucy
#include "Lucy/Search/ANDQuery.h"
#include "Lucy/Search/ORQuery.h"
#include "Lucy/Document/HitDoc.h"
+#include "LucyX/Search/MockMatcher.h"
+#include "Clownfish/Blob.h"
#include "Clownfish/Hash.h"
#include "Clownfish/HashIterator.h"
+
+static inline void
+float32_set(float *floats, size_t i, float value) {
+ floats[i] = value;
+}
+
*/
import "C"
import "fmt"
@@ -183,3 +191,20 @@ func NewORQuery(children []Query) ORQuery {
cfObj := C.lucy_ORQuery_new(childrenC)
return WRAPORQuery(unsafe.Pointer(cfObj))
}
+
+func newMockMatcher(docIDs []int32, scores []float32) MockMatcher {
+ docIDsconv := NewI32Array(docIDs)
+ docIDsCF := (*C.lucy_I32Array)(unsafe.Pointer(docIDsconv.TOPTR()))
+ var blob *C.cfish_Blob = nil
+ if scores != nil {
+ size := len(scores) * 4
+ floats := (*C.float)(C.malloc(C.size_t(size)))
+ for i := 0; i < len(scores); i++ {
+ C.float32_set(floats, C.size_t(i), C.float(scores[i]))
+ }
+ blob = C.cfish_Blob_new_steal((*C.char)(unsafe.Pointer(floats)), C.size_t(size))
+ defer C.cfish_decref(unsafe.Pointer(blob))
+ }
+ matcher := C.lucy_MockMatcher_new(docIDsCF, blob)
+ return WRAPMockMatcher(unsafe.Pointer(matcher))
+}
http://git-wip-us.apache.org/repos/asf/lucy/blob/a7aa7791/go/lucy/search_test.go
----------------------------------------------------------------------
diff --git a/go/lucy/search_test.go b/go/lucy/search_test.go
index d566553..c5e2cc2 100644
--- a/go/lucy/search_test.go
+++ b/go/lucy/search_test.go
@@ -249,3 +249,22 @@ func TestLeafQueryBasics(t *testing.T) {
checkQueryEquals(t, query)
checkQueryToStringHasFoo(t, query)
}
+
+func TestMockMatcherBasics(t *testing.T) {
+ matcher := newMockMatcher([]int32{42, 43, 100}, []float32{1.5, 1.5, 1.5})
+ if got := matcher.Next(); got != 42 {
+ t.Error("Next: %d", got)
+ }
+ if got := matcher.GetDocID(); got != 42 {
+ t.Error("GetDocID: %d", got)
+ }
+ if score := matcher.Score(); score != 1.5 {
+ t.Error("Score: %f", score)
+ }
+ if got := matcher.Advance(50); got != 100 {
+ t.Error("Advance: %d", got)
+ }
+ if got := matcher.Next(); got != 0 {
+ t.Error("Next (iteration finished): %d", got)
+ }
+}