Files
Phraseanet/lib/Alchemy/Phrasea/SearchEngine/SearchEngineInterface.php
Romain Neutron e233e5afa6 Merge branch '3.8'
Conflicts:
	lib/Alchemy/Phrasea/Command/Developer/JavascriptBuilder.php
	lib/Alchemy/Phrasea/Controller/Prod/Basket.php
	lib/Alchemy/Phrasea/Core/Provider/TaskManagerServiceProvider.php
	lib/classes/Exception/Feed/ItemNotFound.php
	lib/classes/Exception/Feed/PublisherNotFound.php
	lib/classes/Feed/Abstract.php
	lib/classes/Feed/Adapter.php
	lib/classes/Feed/Aggregate.php
	lib/classes/Feed/Collection.php
	lib/classes/Feed/CollectionInterface.php
	lib/classes/Feed/Entry/Adapter.php
	lib/classes/Feed/Entry/Collection.php
	lib/classes/Feed/Entry/Interface.php
	lib/classes/Feed/Entry/Item.php
	lib/classes/Feed/Entry/ItemInterface.php
	lib/classes/Feed/Interface.php
	lib/classes/Feed/Link.php
	lib/classes/Feed/LinkInterface.php
	lib/classes/Feed/Publisher/Adapter.php
	lib/classes/Feed/Publisher/Interface.php
	lib/classes/Feed/Token.php
	lib/classes/Feed/TokenAggregate.php
	lib/classes/Feed/XML/Abstract.php
	lib/classes/Feed/XML/Atom.php
	lib/classes/Feed/XML/Cooliris.php
	lib/classes/Feed/XML/Interface.php
	lib/classes/Feed/XML/RSS.php
	lib/classes/Feed/XML/RSS/ImageInterface.php
	lib/classes/http/request.php
	lib/classes/module/console/schedulerStart.php
	lib/classes/module/console/schedulerState.php
	lib/classes/module/console/schedulerStop.php
	lib/classes/module/console/taskState.php
	lib/classes/module/console/tasklist.php
	lib/classes/module/console/taskrun.php
	lib/classes/registry.php
	lib/classes/registryInterface.php
	lib/classes/set/order.php
	lib/classes/system/url.php
	lib/classes/task/Scheduler.php
	lib/classes/task/appboxAbstract.php
	lib/classes/task/databoxAbstract.php
	lib/classes/task/manager.php
	lib/classes/task/period/RecordMover.php
	lib/classes/task/period/apibridge.php
	lib/classes/task/period/archive.php
	lib/classes/task/period/cindexer.php
	lib/classes/task/period/emptyColl.php
	lib/classes/task/period/ftp.php
	lib/classes/task/period/ftpPull.php
	lib/classes/task/period/subdef.php
	lib/classes/task/period/test.php
	lib/classes/task/period/writemeta.php
	lib/conf.d/PhraseaFixture/AbstractWZ.php
	lib/conf.d/PhraseaFixture/Basket/LoadFiveBaskets.php
	lib/conf.d/PhraseaFixture/Basket/LoadOneBasket.php
	lib/conf.d/PhraseaFixture/Basket/LoadOneBasketEnv.php
	lib/conf.d/PhraseaFixture/Lazaret/LoadOneFile.php
	lib/conf.d/PhraseaFixture/Story/LoadOneStory.php
	lib/conf.d/PhraseaFixture/UsrLists/ListAbstract.php
	lib/conf.d/PhraseaFixture/UsrLists/UsrList.php
	lib/conf.d/PhraseaFixture/UsrLists/UsrListEntry.php
	lib/conf.d/PhraseaFixture/UsrLists/UsrListOwner.php
	lib/conf.d/PhraseaFixture/ValidationParticipant/LoadOneParticipant.php
	lib/conf.d/PhraseaFixture/ValidationParticipant/LoadParticipantWithSession.php
	lib/conf.d/PhraseaFixture/ValidationSession/LoadOneValidationSession.php
2014-01-06 15:38:14 +01:00

251 lines
6.0 KiB
PHP

<?php
/*
* This file is part of Phraseanet
*
* (c) 2005-2014 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Alchemy\Phrasea\SearchEngine;
use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\SearchEngine\SearchEngineOptions;
use Alchemy\Phrasea\SearchEngine\SearchEngineResult;
use Alchemy\Phrasea\Exception\RuntimeException;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Doctrine\Common\Collections\ArrayCollection;
use Alchemy\Phrasea\Model\Entities\FeedEntry;
interface SearchEngineInterface
{
const GEM_TYPE_RECORD = 'record';
const GEM_TYPE_STORY = 'story';
const GEM_TYPE_ENTRY = 'entry';
/**
* Returns the name of the search engine
*
* @return string The name of the search-engine
*/
public function getName();
/**
* Check the status of the search engine
*
* @return array An array of key/value parameters
* @throws RuntimeException if something is wrong
*/
public function getStatus();
/**
* @return ConfigurationPanelInterface
*/
public function getConfigurationPanel();
/**
* @return array an array of field names
*/
public function getAvailableDateFields();
/**
* @return array an array containing criteria values as key and criteria names as value
*/
public function getAvailableSort();
/**
* @return string The default sort
*/
public function getDefaultSort();
/**
* @return string The default sort
*/
public function isStemmingEnabled();
/**
* @return array an array containing sort order values as key and sort order names as value
*/
public function getAvailableOrder();
/**
* @return Boolean return true if the search engine supports stemmed search
*/
public function hasStemming();
/**
*
* @return an array of self::GEM_TYPE_* indexed types
*/
public function getAvailableTypes();
/**
* Add a record to index
*
* @param \record_adapter $record
* @return SearchEngineInterface
* @throws RuntimeException
*/
public function addRecord(\record_adapter $record);
/**
* Remove a record from index
*
* @param \record_adapter $record
* @return SearchEngineInterface
* @throws RuntimeException
*/
public function removeRecord(\record_adapter $record);
/**
* Update a record in index
*
* @param \record_adapter $record
* @return SearchEngineInterface
* @throws RuntimeException
*/
public function updateRecord(\record_adapter $record);
/**
* Add a story to index
*
* @param \record_adapter $story
* @return SearchEngineInterface
* @throws RuntimeException
*/
public function addStory(\record_adapter $story);
/**
* Remove a story from index
*
* @param \record_adapter $story
* @return SearchEngineInterface
* @throws RuntimeException
*/
public function removeStory(\record_adapter $story);
/**
* Update a story in index
*
* @param \record_adapter $story
* @return SearchEngineInterface
* @throws RuntimeException
*/
public function updateStory(\record_adapter $story);
/**
* Add an entry to index
*
* @param FeedEntry $entry
* @return SearchEngineInterface
* @throws RuntimeException
*/
public function addFeedEntry(FeedEntry $entry);
/**
* Remove an entry to index
*
* @param FeedEntry $entry
* @return SearchEngineInterface
* @throws RuntimeException
*/
public function removeFeedEntry(FeedEntry $entry);
/**
* Update an entry in the index
*
* @param FeedEntry $entry
* @return SearchEngineInterface
* @throws RuntimeException
*/
public function updateFeedEntry(FeedEntry $entry);
/**
* Set options to search-engine
*
* @param SearchEngineOptions $options
* @return SearchEngineInterface
* @throws RuntimeException
*/
public function setOptions(SearchEngineOptions $options);
/**
* Reset search-engine options
*
* @return SearchEngineInterface
* @throws RuntimeException
*/
public function resetOptions();
/**
*
* @param string $query
* @param integer $offset
* @param integer $perPage
*
* @return SearchEngineResult
*/
public function query($query, $offset, $perPage);
/**
* Return an array of suggestions corresponding to the last word of the
* query
*
* @param string $query
*
* @return ArrayCollection A collection of SearchEngineSuggestion
*/
public function autocomplete($query);
/**
* Highlight the fields of a record
*
* @param type $query
* @param type $fields
* @param \record_adapter $record
*
* @return array The array of highlighted fields
*/
public function excerpt($query, $fields, \record_adapter $record);
/**
* Reset the cache of the SE (if applicable)
*
* @return SearchEngineInterface
*/
public function resetCache();
/**
* Clear the cache of the SE for the current user (if applicable)
*
* @return SearchEngineInterface
*/
public function clearCache();
/**
* Clear all cache prior to the given date (if applicable)
*
* If no date provided, clear all entries
*
* @return SearchEngineInterface
*/
public function clearAllCache(\DateTime $date = null);
/**
* Returns a subscriber
*
* @return EventSubscriberInterface
*/
public static function createSubscriber(Application $app);
/**
* Creates the adapter.
*
* @param Application $app
* @param array $options
*/
public static function create(Application $app, array $options = []);
}