Tune and test Go bindings for SortReader.

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

Branch: refs/heads/master
Commit: db08b691bf6a8b5ce450f296f496c76604eef3e6
Parents: bfe8a34
Author: Marvin Humphrey <[email protected]>
Authored: Thu Dec 10 18:22:14 2015 -0800
Committer: Marvin Humphrey <[email protected]>
Committed: Thu Dec 10 18:53:38 2015 -0800

----------------------------------------------------------------------
 go/build.go            |  4 ++++
 go/lucy/index.go       | 14 ++++++++++++++
 go/lucy/index_test.go  | 16 +++++++++++++++-
 go/lucy/search_test.go |  2 +-
 4 files changed, 34 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/db08b691/go/build.go
----------------------------------------------------------------------
diff --git a/go/build.go b/go/build.go
index a730160..09a31e5 100644
--- a/go/build.go
+++ b/go/build.go
@@ -214,6 +214,10 @@ func specClasses(parcel *cfc.Parcel) {
        hlReaderBinding.SpecMethod("Fetch_Doc_Vec", "FetchDocVec(int32) 
(DocVector, error)")
        hlReaderBinding.Register()
 
+       sortReaderBinding := cfc.NewGoClass(parcel, "Lucy::Index::SortReader")
+       sortReaderBinding.SpecMethod("Fetch_Sort_Cache", 
"fetchSortCache(string) (SortCache, error)")
+       sortReaderBinding.Register()
+
        bgMergerBinding := cfc.NewGoClass(parcel, 
"Lucy::Index::BackgroundMerger")
        bgMergerBinding.SpecMethod("Prepare_Commit", "PrepareCommit() error")
        bgMergerBinding.SpecMethod("Commit", "Commit() error")

http://git-wip-us.apache.org/repos/asf/lucy/blob/db08b691/go/lucy/index.go
----------------------------------------------------------------------
diff --git a/go/lucy/index.go b/go/lucy/index.go
index 09ad6ec..397e860 100644
--- a/go/lucy/index.go
+++ b/go/lucy/index.go
@@ -22,6 +22,7 @@ package lucy
 #include "Lucy/Index/DataReader.h"
 #include "Lucy/Index/DocReader.h"
 #include "Lucy/Index/HighlightReader.h"
+#include "Lucy/Index/SortReader.h"
 #include "Lucy/Index/IndexManager.h"
 #include "Lucy/Index/BackgroundMerger.h"
 #include "Lucy/Index/TermVector.h"
@@ -494,6 +495,19 @@ func (h *HighlightReaderIMP) FetchDocVec(docID int32) 
(retval DocVector, err err
        return retval, err
 }
 
+func (s *SortReaderIMP) fetchSortCache(field string) (retval SortCache, err 
error) {
+       err = clownfish.TrapErr(func() {
+               self := (*C.lucy_SortReader)(clownfish.Unwrap(s, "s"))
+               fieldC := (*C.cfish_String)(clownfish.GoToClownfish(field, 
unsafe.Pointer(C.CFISH_STRING), false))
+               defer C.cfish_decref(unsafe.Pointer(fieldC))
+               retvalCF := C.LUCY_SortReader_Fetch_Sort_Cache(self, fieldC)
+               if retvalCF != nil {
+                       retval = 
clownfish.ToGo(unsafe.Pointer(C.cfish_incref(unsafe.Pointer(retvalCF)))).(SortCache)
+               }
+       })
+       return retval, err
+}
+
 func OpenIndexReader(index interface{}, snapshot Snapshot, manager 
IndexManager) (retval IndexReader, err error) {
        err = clownfish.TrapErr(func() {
                indexC := (*C.cfish_Obj)(clownfish.GoToClownfish(index, 
unsafe.Pointer(C.CFISH_OBJ), false))

http://git-wip-us.apache.org/repos/asf/lucy/blob/db08b691/go/lucy/index_test.go
----------------------------------------------------------------------
diff --git a/go/lucy/index_test.go b/go/lucy/index_test.go
index ebf5d25..efbe0f0 100644
--- a/go/lucy/index_test.go
+++ b/go/lucy/index_test.go
@@ -403,7 +403,7 @@ func TestSortCacheMisc(t *testing.T) {
        ixReader, _ := OpenIndexReader(folder, nil, nil)
        segReaders := ixReader.SegReaders()
        sortReader := 
segReaders[0].Fetch("Lucy::Index::SortReader").(SortReader)
-       sortCache := sortReader.fetchSortCache("content")
+       sortCache, _ := sortReader.fetchSortCache("content")
 
        if card := sortCache.GetCardinality(); card != 4 {
                t.Errorf("GetCardinality: %d", card)
@@ -847,3 +847,17 @@ func TestDeletionsReaderMisc(t *testing.T) {
        }
        runDataReaderCommon(t, delReader, true)
 }
+
+func TestSortReaderMisc(t *testing.T) {
+       folder := createTestIndex("a", "b", "c")
+       ixReader, _ := OpenIndexReader(folder, nil, nil)
+       segReaders := ixReader.SegReaders()
+       sortReader := 
segReaders[0].Fetch("Lucy::Index::SortReader").(SortReader)
+       if got, err := sortReader.fetchSortCache("content"); got == nil || err 
!= nil {
+               t.Errorf("fetchSortCache should succeed: %v", err)
+       }
+       if got, err := sortReader.fetchSortCache("nope"); got != nil || err != 
nil {
+               t.Errorf("fetchSortCache for non-field should return nil: %v", 
err)
+       }
+       runDataReaderCommon(t, sortReader, false)
+}

http://git-wip-us.apache.org/repos/asf/lucy/blob/db08b691/go/lucy/search_test.go
----------------------------------------------------------------------
diff --git a/go/lucy/search_test.go b/go/lucy/search_test.go
index 5061a24..47b809b 100644
--- a/go/lucy/search_test.go
+++ b/go/lucy/search_test.go
@@ -372,7 +372,7 @@ func TestRangeMatcherBasics(t *testing.T) {
        ixReader, _ := OpenIndexReader(index, nil, nil)
        segReaders := ixReader.SegReaders()
        sortReader := 
segReaders[0].Fetch("Lucy::Index::SortReader").(SortReader)
-       sortCache := sortReader.fetchSortCache("content")
+       sortCache, _ := sortReader.fetchSortCache("content")
        matcher := NewRangeMatcher(0, 0, sortCache, segReaders[0].DocMax())
        if docID := matcher.Next(); docID != 4 {
                t.Errorf("Next: %d", docID)

Reply via email to