* * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ namespace OCP\FullTextSearch\Model; /** * Interface ISearchRequest * * When a search request is initiated, from a request from the front-end or using * the IFullTextSearchManager::search() method, FullTextSearch will create a * SearchRequest object, based on this interface. * * The object will be passed to the targeted Content Provider so it can convert * search options using available method. * * The object is then encapsulated in a SearchResult and send to the * Search Platform. * * @since 15.0.0 * * */ interface ISearchRequest { /** * Get the maximum number of results to be returns by the Search Platform. * * @since 15.0.0 * * @return int */ public function getSize(): int; /** * Get the current page. * Used by pagination. * * @since 15.0.0 * * @return int */ public function getPage(): int; /** * Get the author of the request. * * @since 15.0.0 * * @return string */ public function getAuthor(): string; /** * Get the searched string. * * @since 15.0.0 * * @return string */ public function getSearch(): string; /** * Set the searched string. * * @param string $search * * @since 17.0.0 * * @return ISearchRequest */ public function setSearch(string $search): ISearchRequest; /** * Extends the searched string. * * @since 17.0.0 * * @param string $search * * @return ISearchRequest */ public function addSearch(string $search): ISearchRequest; /** * Get the value of an option (as string). * * @since 15.0.0 * * @param string $option * @param string $default * * @return string */ public function getOption(string $option, string $default = ''): string; /** * Get the value of an option (as array). * * @since 15.0.0 * * @param string $option * @param array $default * * @return array */ public function getOptionArray(string $option, array $default = []): array; /** * Limit the search to a part of the document. * * @since 15.0.0 * * @param string $part * * @return ISearchRequest */ public function addPart(string $part): ISearchRequest; /** * Limit the search to an array of parts of the document. * * @since 15.0.0 * * @param array $parts * * @return ISearchRequest */ public function setParts(array $parts): ISearchRequest; /** * Get the parts the search is limited to. * * @since 15.0.0 * * @return array */ public function getParts(): array; /** * Limit the search to a specific meta tag. * * @since 15.0.0 * * @param string $tag * * @return ISearchRequest */ public function addMetaTag(string $tag): ISearchRequest; /** * Get the meta tags the search is limited to. * * @since 15.0.0 * * @return array */ public function getMetaTags(): array; /** * Limit the search to an array of meta tags. * * @since 15.0.0 * * @param array $tags * * @return ISearchRequest */ public function setMetaTags(array $tags): ISearchRequest; /** * Limit the search to a specific sub tag. * * @since 15.0.0 * * @param string $source * @param string $tag * * @return ISearchRequest */ public function addSubTag(string $source, string $tag): ISearchRequest; /** * Get the sub tags the search is limited to. * * @since 15.0.0 * * @param bool $formatted * * @return array */ public function getSubTags(bool $formatted): array; /** * Limit the search to an array of sub tags. * * @since 15.0.0 * * @param array $tags * * @return ISearchRequest */ public function setSubTags(array $tags): ISearchRequest; /** * Limit the search to a specific field of the mapping, using a full string. * * @since 15.0.0 * * @param string $field * * @return ISearchRequest */ public function addLimitField(string $field): ISearchRequest; /** * Get the fields the search is limited to. * * @since 15.0.0 * * @return array */ public function getLimitFields(): array; /** * Limit the search to a specific field of the mapping, using a wildcard on * the search string. * * @since 15.0.0 * * @param string $field * * @return ISearchRequest */ public function addWildcardField(string $field): ISearchRequest; /** * Get the limit to field of the mapping. * * @since 15.0.0 * * @return array */ public function getWildcardFields(): array; /** * Filter the results, based on a group of field, using regex * * @since 15.0.0 * * @param array $filters * * @return ISearchRequest */ public function addRegexFilters(array $filters): ISearchRequest; /** * Get the regex filters the search is limit to. * * @since 15.0.0 * * @return array */ public function getRegexFilters(): array; /** * Filter the results, based on a group of field, using wildcard * * @since 15.0.0 * * @param array $filter * * @return ISearchRequest */ public function addWildcardFilter(array $filter): ISearchRequest; /** * Get the wildcard filters the search is limit to. * * @since 15.0.0 * * @return array */ public function getWildcardFilters(): array; /** * Add an extra field to the search. * * @since 15.0.0 * * @param string $field * * @return ISearchRequest */ public function addField(string $field): ISearchRequest; /** * Get the list of extra field to search into. * * @since 15.0.0 * * @return array */ public function getFields(): array; /** * Add a MUST search on an extra field * * @param ISearchRequestSimpleQuery $query * * @return ISearchRequest * @since 17.0.0 */ public function addSimpleQuery(ISearchRequestSimpleQuery $query): ISearchRequest; /** * Get the list of queries on extra field. * * @return ISearchRequestSimpleQuery[] * @since 17.0.0 */ public function getSimpleQueries(): array; }