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)) defer C.cfish_decref(unsafe.Pointer(indexC)) snapshotC := (*C.lucy_Snapshot)(clownfish.UnwrapNullable(snapshot)) managerC := (*C.lucy_IndexManager)(clownfish.UnwrapNullable(manager)) cfObj := C.lucy_IxReader_open(indexC, snapshotC, managerC) retval = clownfish.WRAPAny(unsafe.Pointer(cfObj)).(IndexReader) }) return retval, err }
func OpenIndexer(args *OpenIndexerArgs) (obj Indexer, err error) { schema := (*C.lucy_Schema)(clownfish.UnwrapNullable(args.Schema)) manager := (*C.lucy_IndexManager)(clownfish.UnwrapNullable(args.Manager)) index := (*C.cfish_Obj)(clownfish.GoToClownfish(args.Index, unsafe.Pointer(C.CFISH_OBJ), false)) defer C.cfish_decref(unsafe.Pointer(index)) var flags int32 if args.Create { flags = flags | int32(C.lucy_Indexer_CREATE) } if args.Truncate { flags = flags | int32(C.lucy_Indexer_TRUNCATE) } err = clownfish.TrapErr(func() { cfObj := C.lucy_Indexer_new(schema, index, manager, C.int32_t(flags)) obj = WRAPIndexer(unsafe.Pointer(cfObj)) }) return obj, err }
func (d *DataWriterIMP) MergeSegment(reader SegReader, docMap []int32) error { return clownfish.TrapErr(func() { self := (*C.lucy_DataWriter)(clownfish.Unwrap(d, "d")) readerCF := (*C.lucy_SegReader)(clownfish.Unwrap(reader, "reader")) docMapConv := NewI32Array(docMap) docMapCF := (*C.lucy_I32Array)(clownfish.UnwrapNullable(docMapConv)) C.LUCY_DataWriter_Merge_Segment(self, readerCF, docMapCF) }) }
func OpenBackgroundMerger(index interface{}, manager IndexManager) (bgm BackgroundMerger, err error) { err = clownfish.TrapErr(func() { indexC := (*C.cfish_Obj)(clownfish.GoToClownfish(index, unsafe.Pointer(C.CFISH_OBJ), false)) defer C.cfish_decref(unsafe.Pointer(indexC)) managerC := (*C.lucy_IndexManager)(clownfish.UnwrapNullable(manager)) cfObj := C.lucy_BGMerger_new(indexC, managerC) bgm = WRAPBackgroundMerger(unsafe.Pointer(cfObj)) }) return bgm, err }
func NewORScorer(children []Matcher, sim Similarity) ORScorer { simC := (*C.lucy_Similarity)(clownfish.UnwrapNullable(sim)) vec := clownfish.NewVector(len(children)) for _, child := range children { vec.Push(child) } childrenC := (*C.cfish_Vector)(unsafe.Pointer(vec.TOPTR())) cfObj := C.lucy_ORScorer_new(childrenC, simC) return WRAPORScorer(unsafe.Pointer(cfObj)) }
func (s *SearcherIMP) topDocs(query Query, numWanted uint32, sortSpec SortSpec) (topDocs TopDocs, err error) { err = clownfish.TrapErr(func() { self := (*C.lucy_Searcher)(clownfish.Unwrap(s, "s")) sortSpecC := (*C.lucy_SortSpec)(clownfish.UnwrapNullable(sortSpec)) queryC := (*C.lucy_Query)(clownfish.Unwrap(query, "query")) topDocsC := C.LUCY_Searcher_Top_Docs(self, queryC, C.uint32_t(numWanted), sortSpecC) topDocs = WRAPTopDocs(unsafe.Pointer(topDocsC)) }) return topDocs, err }
func (s *SearcherIMP) Hits(query interface{}, offset uint32, numWanted uint32, sortSpec SortSpec) (hits Hits, err error) { self := (*C.lucy_Searcher)(clownfish.Unwrap(s, "s")) sortSpecC := (*C.lucy_SortSpec)(clownfish.UnwrapNullable(sortSpec)) queryC := (*C.cfish_Obj)(clownfish.GoToClownfish(query, unsafe.Pointer(C.CFISH_OBJ), false)) defer C.cfish_decref(unsafe.Pointer(queryC)) err = clownfish.TrapErr(func() { hitsC := C.LUCY_Searcher_Hits(self, queryC, C.uint32_t(offset), C.uint32_t(numWanted), sortSpecC) hits = WRAPHits(unsafe.Pointer(hitsC)) }) return hits, err }