See Searcher for the methods that you can use on this object. A MultiSearcher is used to search multiple sub-searchers. The most efficient way to do this would be to open up an IndexReader on multiple directories and creating a Searcher with that. However, if you decide to implement a RemoteSearcher, the MultiSearcher can be used to search multiple machines at once.
Create a new MultiSearcher by passing a list of subsearchers to the constructor.
static VALUE
frb_ms_init(int argc, VALUE *argv, VALUE self)
{
int i, j, top = 0, capa = argc;
VALUE rsearcher;
Searcher **searchers = ALLOC_N(Searcher *, capa);
Searcher *s;
for (i = 0; i < argc; i++) {
rsearcher = argv[i];
switch (TYPE(rsearcher)) {
case T_ARRAY:
capa += RARRAY_LEN(rsearcher);
REALLOC_N(searchers, Searcher *, capa);
for (j = 0; j < RARRAY_LEN(rsearcher); j++) {
VALUE rs = RARRAY_PTR(rsearcher)[j];
Data_Get_Struct(rs, Searcher, s);
searchers[top++] = s;
}
break;
case T_DATA:
Data_Get_Struct(rsearcher, Searcher, s);
searchers[top++] = s;
break;
default:
rb_raise(rb_eArgError, "Can't add class %s to MultiSearcher",
rb_obj_classname(rsearcher));
break;
}
}
s = msea_new(searchers, top, false);
Frt_Wrap_Struct(self, &frb_ms_mark, &frb_ms_free, s);
object_add(s, self);
return self;
}
Generated with the Darkfish Rdoc Generator 2.