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)