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/28 21:52:28 UTC

[12/14] lucy git commit: Generalize `query` param in `Hits`.

Generalize `query` param in `Hits`.

Allow both Query objects and query strings.


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

Branch: refs/heads/master
Commit: 63fd5b8b89ba40cb51934fe087cd3d2c8e8ca3d8
Parents: 40a1eec
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Tue Sep 15 13:33:37 2015 -0700
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Tue Sep 15 15:54:51 2015 -0700

----------------------------------------------------------------------
 go/lucy/search.go | 28 ++++++++++------------------
 1 file changed, 10 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/63fd5b8b/go/lucy/search.go
----------------------------------------------------------------------
diff --git a/go/lucy/search.go b/go/lucy/search.go
index b47b340..e18eee7 100644
--- a/go/lucy/search.go
+++ b/go/lucy/search.go
@@ -83,25 +83,17 @@ func doClose(obj Searcher) error {
 	})
 }
 
-func doHits(obj Searcher, query interface{}, offset uint32, numWanted uint32,
+func doHits(s Searcher, query interface{}, offset uint32, numWanted uint32,
 	sortSpec SortSpec) (hits Hits, err error) {
-	self := ((*C.lucy_Searcher)(unsafe.Pointer(obj.TOPTR())))
-	var sortSpecC *C.lucy_SortSpec
-	if sortSpec != nil {
-		sortSpecC = (*C.lucy_SortSpec)(unsafe.Pointer(sortSpec.TOPTR()))
-	}
-	switch query.(type) {
-	case string:
-		queryStringC := clownfish.NewString(query.(string))
-		err = clownfish.TrapErr(func() {
-			hitsC := C.LUCY_Searcher_Hits(self,
-				(*C.cfish_Obj)(unsafe.Pointer(queryStringC.TOPTR())),
-				C.uint32_t(offset), C.uint32_t(numWanted), sortSpecC)
-			hits = WRAPHits(unsafe.Pointer(hitsC))
-		})
-	default:
-		panic("TODO: support Query objects")
-	}
+	self := (*C.lucy_Searcher)(clownfish.Unwrap(s, "s"))
+	sortSpecC := (*C.lucy_SortSpec)(clownfish.UnwrapNullable(sortSpec))
+	queryC := (*C.cfish_Obj)(clownfish.GoToClownfish(query, unsafe.Pointer(C.CFISH_OBJ), false))
+	defer C.cfish_decref(unsafe.Pointer(queryC))
+	err = clownfish.TrapErr(func() {
+		hitsC := C.LUCY_Searcher_Hits(self, queryC,
+			C.uint32_t(offset), C.uint32_t(numWanted), sortSpecC)
+		hits = WRAPHits(unsafe.Pointer(hitsC))
+	})
 	return hits, err
 }