blob: e8980b91a6a071a311e784029f2d099d84be817d [file] [log] [blame]
/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
parcel Lucy;
/** Aggregate results from multiple Searchers.
*
* The primary use for PolySearcher is to aggregate results from several
* remote L<Searchers|Lucy::Search::Searcher> via
* L<LucyX::Remote::SearchClient>, diffusing the cost of searching a large
* corpus over multiple machines. It is also possible to aggregate results
* from multiple Searchers on a single machine.
*/
class Lucy::Search::PolySearcher
inherits Lucy::Search::Searcher {
VArray *searchers;
I32Array *starts;
int32_t doc_max;
inert incremented PolySearcher*
new(Schema *schema, VArray *searchers);
/**
* @param schema A Schema.
* @param searchers An array of Searchers.
*/
public inert PolySearcher*
init(PolySearcher *self, Schema *schema, VArray *searchers);
public void
Destroy(PolySearcher *self);
public int32_t
Doc_Max(PolySearcher *self);
public uint32_t
Doc_Freq(PolySearcher *self, const CharBuf *field, Obj *term);
public void
Collect(PolySearcher *self, Query *query, Collector *collector);
incremented TopDocs*
Top_Docs(PolySearcher *self, Query *query, uint32_t num_wanted,
SortSpec *sort_spec = NULL);
public incremented HitDoc*
Fetch_Doc(PolySearcher *self, int32_t doc_id);
incremented DocVector*
Fetch_Doc_Vec(PolySearcher *self, int32_t doc_id);
}