Add error to Go binding for MakeMatcher.
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/6d0a55f7 Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/6d0a55f7 Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/6d0a55f7 Branch: refs/heads/master Commit: 6d0a55f7387df4714386b7ffce9ba554c0c384f4 Parents: 3d636a1 Author: Marvin Humphrey <[email protected]> Authored: Thu Nov 12 19:38:23 2015 -0800 Committer: Marvin Humphrey <[email protected]> Committed: Fri Nov 20 16:43:37 2015 -0800 ---------------------------------------------------------------------- go/build.go | 4 ++++ go/lucy/search.go | 16 ++++++++++++++++ go/lucy/search_test.go | 5 +++++ 3 files changed, 25 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy/blob/6d0a55f7/go/build.go ---------------------------------------------------------------------- diff --git a/go/build.go b/go/build.go index ccd606b..fc73f64 100644 --- a/go/build.go +++ b/go/build.go @@ -228,6 +228,10 @@ func specClasses(parcel *cfc.Parcel) { hitsBinding.SetSuppressStruct(true) hitsBinding.Register() + compilerBinding := cfc.NewGoClass(parcel, "Lucy::Search::Compiler") + compilerBinding.SpecMethod("Make_Matcher", "MakeMatcher(SegReader, bool) (Matcher, error)") + compilerBinding.Register() + andQueryBinding := cfc.NewGoClass(parcel, "Lucy::Search::ANDQuery") andQueryBinding.SetSuppressCtor(true) andQueryBinding.Register() http://git-wip-us.apache.org/repos/asf/lucy/blob/6d0a55f7/go/lucy/search.go ---------------------------------------------------------------------- diff --git a/go/lucy/search.go b/go/lucy/search.go index 147af63..c539044 100644 --- a/go/lucy/search.go +++ b/go/lucy/search.go @@ -25,6 +25,7 @@ package lucy #include "Lucy/Search/Hits.h" #include "Lucy/Search/IndexSearcher.h" #include "Lucy/Search/Query.h" +#include "Lucy/Search/Compiler.h" #include "Lucy/Search/Searcher.h" #include "Lucy/Search/ANDQuery.h" #include "Lucy/Search/ORQuery.h" @@ -244,6 +245,21 @@ func (td *TopDocsIMP) GetMatchDocs() []MatchDoc { return slice } +func (c *CompilerIMP) MakeMatcher(reader SegReader, needScore bool) (retval Matcher, err error) { + err = clownfish.TrapErr(func() { + self := (*C.lucy_Compiler)(clownfish.Unwrap(c, "c")) + readerCF := (*C.lucy_SegReader)(clownfish.Unwrap(reader, "reader")) + retvalCF := C.LUCY_Compiler_Make_Matcher(self, readerCF, C.bool(needScore)) + if retvalCF != nil { + retval = clownfish.WRAPAny(unsafe.Pointer(retvalCF)).(Matcher) + } + }) + if err != nil || retval == nil { + return nil, err + } + return retval, err +} + func NewANDQuery(children []Query) ANDQuery { vec := clownfish.NewVector(len(children)) for _, child := range children { http://git-wip-us.apache.org/repos/asf/lucy/blob/6d0a55f7/go/lucy/search_test.go ---------------------------------------------------------------------- diff --git a/go/lucy/search_test.go b/go/lucy/search_test.go index 50d7fae..a92708c 100644 --- a/go/lucy/search_test.go +++ b/go/lucy/search_test.go @@ -95,6 +95,11 @@ func TestTermCompilerMisc(t *testing.T) { checkQuerySerialize(t, compiler) checkQueryEquals(t, compiler) checkQueryToStringHasFoo(t, compiler) + segReaders := searcher.GetReader().SegReaders() + matcher, err := compiler.MakeMatcher(segReaders[0].(SegReader), false) + if matcher == nil || err != nil { + t.Errorf("MakeMatcher: %v", err) + } } func TestTermCompilerWeighting(t *testing.T) {
