Tune and test Go bindings for SegWriter.
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/126c6ba8 Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/126c6ba8 Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/126c6ba8 Branch: refs/heads/master Commit: 126c6ba8907c2f134c9921cafe8d7dc74f1fbc5d Parents: 2932054 Author: Marvin Humphrey <[email protected]> Authored: Mon Dec 21 12:38:25 2015 -0800 Committer: Marvin Humphrey <[email protected]> Committed: Mon Dec 21 12:38:25 2015 -0800 ---------------------------------------------------------------------- go/build.go | 5 +++++ go/lucy/index.go | 16 ++++++++++++++++ go/lucy/index_test.go | 17 +++++++++++++++++ 3 files changed, 38 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy/blob/126c6ba8/go/build.go ---------------------------------------------------------------------- diff --git a/go/build.go b/go/build.go index 82bcd9c..e3fc79d 100644 --- a/go/build.go +++ b/go/build.go @@ -236,6 +236,11 @@ func specClasses(parcel *cfc.Parcel) { dwBinding.SpecMethod("Finish", "Finish() error") dwBinding.Register() + segWriterBinding := cfc.NewGoClass(parcel, "Lucy::Index::SegWriter") + segWriterBinding.SpecMethod("Prep_Seg_Dir", "PrepSegDir() error") + segWriterBinding.SpecMethod("Add_Doc", "AddDoc(Doc, float32) error") + segWriterBinding.Register() + delWriterBinding := cfc.NewGoClass(parcel, "Lucy::Index::DeletionsWriter") delWriterBinding.SpecMethod("Delete_By_Term", "DeleteByTerm(string, interface{}) error") delWriterBinding.SpecMethod("Delete_By_Query", "DeleteByQuery(Query) error") http://git-wip-us.apache.org/repos/asf/lucy/blob/126c6ba8/go/lucy/index.go ---------------------------------------------------------------------- diff --git a/go/lucy/index.go b/go/lucy/index.go index 67ec832..6f627f0 100644 --- a/go/lucy/index.go +++ b/go/lucy/index.go @@ -21,6 +21,7 @@ package lucy #include "Lucy/Index/IndexReader.h" #include "Lucy/Index/DataReader.h" #include "Lucy/Index/DataWriter.h" +#include "Lucy/Index/SegWriter.h" #include "Lucy/Index/DeletionsWriter.h" #include "Lucy/Index/DocReader.h" #include "Lucy/Index/LexiconReader.h" @@ -280,6 +281,21 @@ func (d *DataWriterIMP) Finish() error { }) } +func (s *SegWriterIMP) PrepSegDir() error { + return clownfish.TrapErr(func() { + self := (*C.lucy_SegWriter)(clownfish.Unwrap(s, "s")) + C.LUCY_SegWriter_Prep_Seg_Dir(self) + }) +} + +func (s *SegWriterIMP) AddDoc(doc Doc, boost float32) error { + return clownfish.TrapErr(func() { + self := (*C.lucy_SegWriter)(clownfish.Unwrap(s, "s")) + docCF := (*C.lucy_Doc)(clownfish.Unwrap(doc, "doc")) + C.LUCY_SegWriter_Add_Doc(self, docCF, C.float(boost)) + }) +} + func (d *DeletionsWriterIMP) DeleteByTerm(field string, term interface{}) error { return clownfish.TrapErr(func() { self := (*C.lucy_DeletionsWriter)(clownfish.Unwrap(d, "d")) http://git-wip-us.apache.org/repos/asf/lucy/blob/126c6ba8/go/lucy/index_test.go ---------------------------------------------------------------------- diff --git a/go/lucy/index_test.go b/go/lucy/index_test.go index 9f2aca9..bc6bac4 100644 --- a/go/lucy/index_test.go +++ b/go/lucy/index_test.go @@ -994,3 +994,20 @@ func TestDeletionsWriterMisc(t *testing.T) { t.Errorf("segDeletions: %v", err) } } + +func TestSegWriterMisc(t *testing.T) { + index := createTestIndex("a", "b", "c") + ixReader, _ := OpenIndexReader(index, nil, nil) + polyReader := ixReader.(PolyReader) + schema := polyReader.GetSchema() + segment := NewSegment(2) + snapshot := polyReader.GetSnapshot() + segWriter := NewSegWriter(schema, snapshot, segment, polyReader) + if err := segWriter.PrepSegDir(); err != nil { + t.Errorf("PrepSegDir: %v", err) + } + doc := NewDoc(1) + if err := segWriter.AddDoc(doc, 1.0); err != nil { + t.Errorf("AddDoc: %v", err) + } +}
