123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625 |
- <?php
- declare(strict_types=1);
- /**
- * @copyright 2018
- *
- * @author Christoph Wurst <christoph@winzerhof-wurst.at>
- * @author Maxence Lange <maxence@artificial-owl.com>
- *
- * @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\Model;
- /**
- * Class IIndexDocument
- *
- * This is one of the main class of the FullTextSearch, used as a data transfer
- * object. An IIndexDocument is created to manage documents around FullTextSearch,
- * during an index and during a search.
- * The uniqueness of an IIndexDocument is made by the Id of the Content Provider
- * and the Id of the original document within the Content Provider.
- *
- * We will call original document the source from which the IIndexDocument is
- * generated. As an example, an original document can be a file, a mail, ...
- *
- * @since 15.0.0
- */
- interface IIndexDocument {
- public const NOT_ENCODED = 0;
- public const ENCODED_BASE64 = 1;
- /**
- * Returns the Id of the original document.
- *
- * @since 15.0.0
- *
- * @return string
- */
- public function getId(): string;
- /**
- * Returns the Id of the provider.
- *
- * @since 15.0.0
- *
- * @return string
- */
- public function getProviderId(): string;
- /**
- * Set the Index related to the IIndexDocument.
- *
- * @see IIndex
- *
- * @since 15.0.0
- *
- * @param IIndex $index
- *
- * @return IIndexDocument
- */
- public function setIndex(IIndex $index): IIndexDocument;
- /**
- * Get the Index.
- *
- * @since 15.0.0
- *
- * @return IIndex
- */
- public function getIndex(): IIndex;
- /**
- * return if Index is defined.
- *
- * @since 16.0.0
- *
- * @return bool
- */
- public function hasIndex(): bool;
- /**
- * Set the modified time of the original document.
- *
- * @since 15.0.0
- *
- * @param int $modifiedTime
- *
- * @return IIndexDocument
- */
- public function setModifiedTime(int $modifiedTime): IIndexDocument;
- /**
- * Get the modified time of the original document.
- *
- * @since 15.0.0
- *
- * @return int
- */
- public function getModifiedTime(): int;
- /**
- * Check if the original document of the IIndexDocument is older than $time.
- *
- * @since 15.0.0
- *
- * @param int $time
- *
- * @return bool
- */
- public function isOlderThan(int $time): bool;
- /**
- * Set the read rights of the original document using a IDocumentAccess.
- *
- * @see IDocumentAccess
- *
- * @since 15.0.0
- *
- * @param IDocumentAccess $access
- *
- * @return $this
- */
- public function setAccess(IDocumentAccess $access): IIndexDocument;
- /**
- * Get the IDocumentAccess related to the original document.
- *
- * @since 15.0.0
- *
- * @return IDocumentAccess
- */
- public function getAccess(): IDocumentAccess;
- /**
- * Add a tag to the list.
- *
- * @since 15.0.0
- *
- * @param string $tag
- *
- * @return IIndexDocument
- */
- public function addTag(string $tag): IIndexDocument;
- /**
- * Set the list of tags assigned to the original document.
- *
- * @since 15.0.0
- *
- * @param array $tags
- *
- * @return IIndexDocument
- */
- public function setTags(array $tags): IIndexDocument;
- /**
- * Get the list of tags assigned to the original document.
- *
- * @since 15.0.0
- *
- * @return array
- */
- public function getTags(): array;
- /**
- * Add a meta tag to the list.
- *
- * @since 15.0.0
- *
- * @param string $tag
- *
- * @return IIndexDocument
- */
- public function addMetaTag(string $tag): IIndexDocument;
- /**
- * Set the list of meta tags assigned to the original document.
- *
- * @since 15.0.0
- *
- * @param array $tags
- *
- * @return IIndexDocument
- */
- public function setMetaTags(array $tags): IIndexDocument;
- /**
- * Get the list of meta tags assigned to the original document.
- *
- * @since 15.0.0
- *
- * @return array
- */
- public function getMetaTags(): array;
- /**
- * Add a sub tag to the list.
- *
- * @since 15.0.0
- *
- * @param string $sub
- * @param string $tag
- *
- * @return IIndexDocument
- */
- public function addSubTag(string $sub, string $tag): IIndexDocument;
- /**
- * Set the list of sub tags assigned to the original document.
- *
- * @since 15.0.0
- *
- * @param array $tags
- *
- * @return IIndexDocument
- */
- public function setSubTags(array $tags): IIndexDocument;
- /**
- * Get the list of sub tags assigned to the original document.
- * If $formatted is true, the result will be formatted in a one
- * dimensional array.
- *
- * @since 15.0.0
- *
- * @param bool $formatted
- *
- * @return array
- */
- public function getSubTags(bool $formatted = false): array;
- /**
- * Set the source of the original document.
- *
- * @since 15.0.0
- *
- * @param string $source
- *
- * @return IIndexDocument
- */
- public function setSource(string $source): IIndexDocument;
- /**
- * Get the source of the original document.
- *
- * @since 15.0.0
- *
- * @return string
- */
- public function getSource(): string;
- /**
- * Set the title of the original document.
- *
- * @since 15.0.0
- *
- * @param string $title
- *
- * @return IIndexDocument
- */
- public function setTitle(string $title): IIndexDocument;
- /**
- * Get the title of the original document.
- *
- * @since 15.0.0
- *
- * @return string
- */
- public function getTitle(): string;
- /**
- * Set the content of the document.
- * $encoded can be NOT_ENCODED or ENCODED_BASE64 if the content is raw or
- * encoded in base64.
- *
- * @since 15.0.0
- *
- * @param string $content
- * @param int $encoded
- *
- * @return IIndexDocument
- */
- public function setContent(string $content, int $encoded = 0): IIndexDocument;
- /**
- * Get the content of the original document.
- *
- * @since 15.0.0
- *
- * @return string
- */
- public function getContent(): string;
- /**
- * Returns the type of the encoding on the content.
- *
- * @since 15.0.0
- *
- * @return int
- */
- public function isContentEncoded(): int;
- /**
- * Return the size of the content.
- *
- * @since 15.0.0
- *
- * @return int
- */
- public function getContentSize(): int;
- /**
- * Generate an hash, based on the content of the original document.
- *
- * @since 15.0.0
- *
- * @return IIndexDocument
- */
- public function initHash(): IIndexDocument;
- /**
- * Set the hash of the original document.
- *
- * @since 15.0.0
- *
- * @param string $hash
- *
- * @return IIndexDocument
- */
- public function setHash(string $hash): IIndexDocument;
- /**
- * Get the hash of the original document.
- *
- * @since 15.0.0
- *
- * @return string
- */
- public function getHash(): string;
- /**
- * Add a part, identified by a string, and its content.
- *
- * It is strongly advised to use alphanumerical chars with no space in the
- * $part string.
- *
- * @since 15.0.0
- *
- * @param string $part
- * @param string $content
- *
- * @return IIndexDocument
- */
- public function addPart(string $part, string $content): IIndexDocument;
- /**
- * Set all parts and their content.
- *
- * @since 15.0.0
- *
- * @param array $parts
- *
- * @return IIndexDocument
- */
- public function setParts(array $parts): IIndexDocument;
- /**
- * Get all parts of the IIndexDocument.
- *
- * @since 15.0.0
- *
- * @return array
- */
- public function getParts(): array;
- /**
- * Add a link, usable by the frontend.
- *
- * @since 15.0.0
- *
- * @param string $link
- *
- * @return IIndexDocument
- */
- public function setLink(string $link): IIndexDocument;
- /**
- * Get the link.
- *
- * @since 15.0.0
- *
- * @return string
- */
- public function getLink(): string;
- /**
- * Set more information that couldn't be set using other method.
- *
- * @since 15.0.0
- *
- * @param array $more
- *
- * @return IIndexDocument
- */
- public function setMore(array $more): IIndexDocument;
- /**
- * Get more information.
- *
- * @since 15.0.0
- *
- * @return array
- */
- public function getMore(): array;
- /**
- * Add some excerpt of the content of the original document, usually based
- * on the search request.
- *
- * @since 16.0.0
- *
- * @param string $source
- * @param string $excerpt
- *
- * @return IIndexDocument
- */
- public function addExcerpt(string $source, string $excerpt): IIndexDocument;
- /**
- * Set all excerpts of the content of the original document.
- *
- * @since 16.0.0
- *
- * @param array $excerpts
- *
- * @return IIndexDocument
- */
- public function setExcerpts(array $excerpts): IIndexDocument;
- /**
- * Get all excerpts of the content of the original document.
- *
- * @since 15.0.0
- *
- * @return array
- */
- public function getExcerpts(): array;
- /**
- * Set the score to the result assigned to this document during a search
- * request.
- *
- * @since 15.0.0
- *
- * @param string $score
- *
- * @return IIndexDocument
- */
- public function setScore(string $score): IIndexDocument;
- /**
- * Get the score.
- *
- * @since 15.0.0
- *
- * @return string
- */
- public function getScore(): string;
- /**
- * Set some information about the original document that will be available
- * to the front-end when displaying search result. (as string)
- * Because this information will not be indexed, this method can also be
- * used to manage some data while filling the IIndexDocument before its
- * indexing.
- *
- * @since 15.0.0
- *
- * @param string $info
- * @param string $value
- *
- * @return IIndexDocument
- */
- public function setInfo(string $info, string $value): IIndexDocument;
- /**
- * Get an information about a document. (string)
- *
- * @since 15.0.0
- *
- * @param string $info
- * @param string $default
- *
- * @return string
- */
- public function getInfo(string $info, string $default = ''): string;
- /**
- * Set some information about the original document that will be available
- * to the front-end when displaying search result. (as array)
- * Because this information will not be indexed, this method can also be
- * used to manage some data while filling the IIndexDocument before its
- * indexing.
- *
- * @since 15.0.0
- *
- * @param string $info
- * @param array $value
- *
- * @return IIndexDocument
- */
- public function setInfoArray(string $info, array $value): IIndexDocument;
- /**
- * Get an information about a document. (array)
- *
- * @since 15.0.0
- *
- * @param string $info
- * @param array $default
- *
- * @return array
- */
- public function getInfoArray(string $info, array $default = []): array;
- /**
- * Set some information about the original document that will be available
- * to the front-end when displaying search result. (as int)
- * Because this information will not be indexed, this method can also be
- * used to manage some data while filling the IIndexDocument before its
- * indexing.
- *
- * @since 15.0.0
- *
- * @param string $info
- * @param int $value
- *
- * @return IIndexDocument
- */
- public function setInfoInt(string $info, int $value): IIndexDocument;
- /**
- * Get an information about a document. (int)
- *
- * @since 15.0.0
- *
- * @param string $info
- * @param int $default
- *
- * @return int
- */
- public function getInfoInt(string $info, int $default = 0): int;
- /**
- * Set some information about the original document that will be available
- * to the front-end when displaying search result. (as bool)
- * Because this information will not be indexed, this method can also be
- * used to manage some data while filling the IIndexDocument before its
- * indexing.
- *
- * @since 15.0.0
- *
- * @param string $info
- * @param bool $value
- *
- * @return IIndexDocument
- */
- public function setInfoBool(string $info, bool $value): IIndexDocument;
- /**
- * Get an information about a document. (bool)
- *
- * @since 15.0.0
- *
- * @param string $info
- * @param bool $default
- *
- * @return bool
- */
- public function getInfoBool(string $info, bool $default = false): bool;
- /**
- * Get all info.
- *
- * @since 15.0.0
- *
- * @return array
- */
- public function getInfoAll(): array;
- }
|