mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-17 23:13:15 +00:00
Refactor merged field structure
Here is the new model: +-----------------------------+ | Structure | +-----------------------------+ | +createFromDataboxes() | | getAllFields() | | getUnrestrictedFields() | | getPrivateFields() | | getFacetsFields() | | getThesaurusEnabledFields() | | getDateFields() | |- - - - - - - - - - - - - - -| | add() | | get() | | typeOf() | | isPrivate() | +-------+-+-+-----------------+ | | | +---------------------+ | | +--------> | Field | | | +---------------------+ | | | getName() | | | | getType() | | | | isXXX() | | | | getThesaurusRoots() | | | +---------------------+ | | | | +-------+ | +----------> | Field | | +-------+ | | +-------+ +------------> | Field | +-------+ It was driven by the following use cases: - Get list of facets (only searchable fields) - Get list of fields with concept inference - Get list of all fields - Splitted in private / public fields (to define mapping) - Get all date fields - Get field type - To apply sanitization rules - To define mapping - Check if concept inference enabled - Check if the field is searchable - Check if the field is a facet - Check if the field is private - Dereference field from label (still to be done) (The last two UCs are new) Also removed old code from legacy search engines. [#PHRAS-500]
This commit is contained in:
@@ -17,6 +17,7 @@ use Alchemy\Phrasea\SearchEngine\Elastic\Indexer\TermIndexer;
|
||||
use Alchemy\Phrasea\SearchEngine\Elastic\RecordHelper;
|
||||
use Alchemy\Phrasea\SearchEngine\Elastic\Search\FacetsResponse;
|
||||
use Alchemy\Phrasea\SearchEngine\Elastic\Search\QueryContext;
|
||||
use Alchemy\Phrasea\SearchEngine\Elastic\Structure\Structure;
|
||||
use Alchemy\Phrasea\SearchEngine\SearchEngineInterface;
|
||||
use Alchemy\Phrasea\SearchEngine\SearchEngineOptions;
|
||||
use Alchemy\Phrasea\SearchEngine\SearchEngineResult;
|
||||
@@ -34,17 +35,18 @@ class ElasticSearchEngine implements SearchEngineInterface
|
||||
const FLAG_UNSET_ONLY = 'unset_only';
|
||||
|
||||
private $app;
|
||||
private $structure;
|
||||
/** @var Client */
|
||||
private $client;
|
||||
private $dateFields;
|
||||
private $indexName;
|
||||
private $configurationPanel;
|
||||
private $locales;
|
||||
private $recordHelper;
|
||||
|
||||
public function __construct(Application $app, Client $client, $indexName, array $locales, RecordHelper $recordHelper, Closure $facetsResponseFactory)
|
||||
public function __construct(Application $app, Structure $structure, Client $client, $indexName, array $locales, RecordHelper $recordHelper, Closure $facetsResponseFactory)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->structure = $structure;
|
||||
$this->client = $client;
|
||||
$this->locales = array_keys($locales);
|
||||
$this->recordHelper = $recordHelper;
|
||||
@@ -117,11 +119,7 @@ class ElasticSearchEngine implements SearchEngineInterface
|
||||
*/
|
||||
public function getAvailableDateFields()
|
||||
{
|
||||
if ($this->dateFields === null) {
|
||||
$this->dateFields = $this->recordHelper->getDateFields();
|
||||
}
|
||||
|
||||
return $this->dateFields;
|
||||
return array_keys($this->structure->getDateFields());
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user