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/12/28 21:10:57 UTC

[10/16] lucy git commit: Tune and test Go bindings for SortReader.

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 <ma...@rectangular.com>
Authored: Thu Dec 10 18:22:14 2015 -0800
Committer: Marvin Humphrey <ma...@rectangular.com>
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)