You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
227 lines
5.7 KiB
227 lines
5.7 KiB
<?php |
|
declare(strict_types=1); |
|
|
|
|
|
/** |
|
* FullTextSearch - Full text search framework for Nextcloud |
|
* |
|
* This file is licensed under the Affero General Public License version 3 or |
|
* later. See the COPYING file. |
|
* |
|
* @author Maxence Lange <maxence@artificial-owl.com> |
|
* @copyright 2018 |
|
* @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 <http://www.gnu.org/licenses/>. |
|
* |
|
*/ |
|
|
|
|
|
namespace OCP\FullTextSearch; |
|
|
|
|
|
use OCP\FullTextSearch\Model\IDocumentAccess; |
|
use OCP\FullTextSearch\Model\IIndex; |
|
use OCP\FullTextSearch\Model\IIndexDocument; |
|
use OCP\FullTextSearch\Model\IRunner; |
|
use OCP\FullTextSearch\Model\ISearchResult; |
|
|
|
|
|
/** |
|
* Interface IFullTextSearchPlatform |
|
* |
|
* This interface must be use when creating a Search Platform for FullTextSearch. |
|
* |
|
* A Search Platform is an extension to the FullTextSearch that will act as a |
|
* a gateway between FullTextSearch and a search server (ie. ElasticSearch, |
|
* Solr, ...) |
|
* |
|
* Multiple Search Platform can exist at the same time in Nextcloud, however only |
|
* one Search Platform will be used by FullTextSearch. |
|
* Administrator must select at least one Search Platform to be used by |
|
* FullTextSearch in the admin settings page. |
|
* |
|
* The content provided by FullTextSearch comes in chunk from multiple Content |
|
* Provider. Each chunk is identified by the ID of the Content Provider, and the |
|
* ID of the document. |
|
* |
|
* |
|
* To oversimplify the mechanism: |
|
* |
|
* - When indexing, FullTextSearch will send providerId, documentId, content. |
|
* - When searching within the content of a Content Provider, identified by its |
|
* providerId, FullTextSearch expect documentId as result. |
|
* |
|
* |
|
* The Search Platform ia a PHP class that implement this interface and is defined |
|
* in appinfo/info.xml of the app that contains that class: |
|
* |
|
* <fulltextsearch> |
|
* <platform>OCA\YourApp\YourSearchPlatform</platform> |
|
* </fulltextsearch> |
|
* |
|
* Multiple Search Platform can be defined in a single app. |
|
* |
|
* @since 15.0.0 |
|
* |
|
* @package OCP\FullTextSearch |
|
*/ |
|
interface IFullTextSearchPlatform { |
|
|
|
|
|
/** |
|
* Must returns a unique Id used to identify the Search Platform. |
|
* Id must contains only alphanumeric chars, with no space. |
|
* |
|
* @since 15.0.0 |
|
* |
|
* @return string |
|
*/ |
|
public function getId(): string; |
|
|
|
|
|
/** |
|
* Must returns a descriptive name of the Search Platform. |
|
* This is used mainly in the admin settings page to display the list of |
|
* available Search Platform |
|
* |
|
* @since 15.0.0 |
|
* |
|
* @return string |
|
*/ |
|
public function getName(): string; |
|
|
|
|
|
/** |
|
* should returns the current configuration of the Search Platform. |
|
* This is used to display the configuration when using the |
|
* ./occ fulltextsearch:check command line. |
|
* |
|
* @since 15.0.0 |
|
* |
|
* @return array |
|
*/ |
|
public function getConfiguration(): array; |
|
|
|
|
|
/** |
|
* Set the wrapper of the currently executed process. |
|
* Because the index process can be long and heavy, and because errors can |
|
* be encountered during the process, the IRunner is a wrapper that allow the |
|
* Search Platform to communicate with the process initiated by |
|
* FullTextSearch. |
|
* |
|
* The IRunner is coming with some methods so the Search Platform can |
|
* returns important information and errors to be displayed to the admin. |
|
* |
|
* @since 15.0.0 |
|
* |
|
* @param IRunner $runner |
|
*/ |
|
public function setRunner(IRunner $runner); |
|
|
|
|
|
/** |
|
* Called when FullTextSearch is loading your Search Platform. |
|
* |
|
* @since 15.0.0 |
|
*/ |
|
public function loadPlatform(); |
|
|
|
|
|
/** |
|
* Called to check that your Search Platform is correctly configured and that |
|
* This is also the right place to check that the Search Service is available. |
|
* |
|
* @since 15.0.0 |
|
* |
|
* @return bool |
|
*/ |
|
public function testPlatform(): bool; |
|
|
|
|
|
/** |
|
* Called before an index is initiated. |
|
* Best place to initiate some stuff on the Search Server (mapping, ...) |
|
* |
|
* @since 15.0.0 |
|
*/ |
|
public function initializeIndex(); |
|
|
|
|
|
/** |
|
* Reset the indexes for a specific providerId. |
|
* $providerId can be 'all' if it is a global reset. |
|
* |
|
* @since 15.0.0 |
|
* |
|
* @param string $providerId |
|
*/ |
|
public function resetIndex(string $providerId); |
|
|
|
|
|
/** |
|
* Deleting some IIndex, sent in an array |
|
* |
|
* @see IIndex |
|
* |
|
* @since 15.0.0 |
|
* |
|
* @param IIndex[] $indexes |
|
*/ |
|
public function deleteIndexes(array $indexes); |
|
|
|
|
|
/** |
|
* Indexing a document. |
|
* |
|
* @see IndexDocument |
|
* |
|
* @since 15.0.0 |
|
* |
|
* @param IIndexDocument $document |
|
* |
|
* @return IIndex |
|
*/ |
|
public function indexDocument(IIndexDocument $document): IIndex; |
|
|
|
|
|
/** |
|
* Searching documents, ISearchResult should be updated with the result of |
|
* the search. |
|
* |
|
* @since 15.0.0 |
|
* |
|
* @param ISearchResult $result |
|
* @param IDocumentAccess $access |
|
*/ |
|
public function searchRequest(ISearchResult $result, IDocumentAccess $access); |
|
|
|
|
|
/** |
|
* Return a document based on its Id and the Provider. |
|
* This is used when an admin execute ./occ fulltextsearch:document:platform |
|
* |
|
* @since 15.0.0 |
|
* |
|
* @param string $providerId |
|
* @param string $documentId |
|
* |
|
* @return IIndexDocument |
|
*/ |
|
public function getDocument(string $providerId, string $documentId): IIndexDocument; |
|
|
|
|
|
} |
|
|
|
|