/* 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; /** Basic search engine. * * Lucy::Simple is a stripped-down interface for the Apache Lucy search * engine library. */ public class Lucy::Simple { Obj *index; String *language; Schema *schema; FieldType *type; Indexer *indexer; IndexSearcher *searcher; Hits *hits; /** Create a Lucy::Simple object, which can be used for both indexing and * searching. Both parameters `path` and `language` are required. * * @param path Where the index directory should be located. If no index * is found at the specified location, one will be created. * @param language The language of the documents in your collection, * indicated by a two-letter ISO code. 12 languages are supported: * * |-----------------------| * | Language | ISO code | * |-----------------------| * | Danish | da | * | Dutch | nl | * | English | en | * | Finnish | fi | * | French | fr | * | German | de | * | Italian | it | * | Norwegian | no | * | Portuguese | pt | * | Spanish | es | * | Swedish | sv | * | Russian | ru | * |-----------------------| */ public inert Simple* new(Obj *path, String *language); /** Initialize a Lucy::Simple object. */ public inert Simple* init(Simple *self, Obj *path, String *language); /** Add a document to the index. */ public void Add_Doc(Simple *self, Doc *doc); /** Search the index. Returns the total number of documents which match * the query. (This number is unlikely to match `num_wanted`.) * * @param query A search query string. * @param offset The number of most-relevant hits to discard, typically * used when "paging" through hits N at a time. Setting offset to 20 and * num_wanted to 10 retrieves hits 21-30, assuming that 30 hits can be * found. * @param num_wanted The number of hits you would like to see after * `offset` is taken into account. * @param sort_spec A [](SortSpec), which will affect how results are * ranked and returned. */ public uint32_t Search(Simple *self, String *query, uint32_t offset = 0, uint32_t num_wanted = 10, SortSpec *sort_spec = NULL); /** Return the next hit, or [](cfish:@null) when the iterator is exhausted. */ public incremented nullable HitDoc* Next(Simple *self); Indexer* Get_Indexer(Simple *self); nullable Hits* Get_Hits(Simple *self); void Finish_Indexing(Simple *self); public void Destroy(Simple *self); }