mirror of
https://github.com/Codappix/search_core.git
synced 2024-11-22 11:16:11 +01:00
FEATURE: Adjust configuration structure
* To support further configuration, specific to identifiers / tables. * E.g. mapping and boost configuration should be possible. * Adjust docs and settings. * Adjust tests and code.
This commit is contained in:
parent
0136c10f12
commit
3553c443e2
10 changed files with 49 additions and 58 deletions
|
@ -57,6 +57,9 @@ class IndexCommandController extends CommandController
|
|||
{
|
||||
// TODO: Allow to index multiple tables at once?
|
||||
// TODO: Also allow to index everything?
|
||||
|
||||
// TODO: There is no test yet!
|
||||
// TODO: Add test, adjust config path
|
||||
if (! in_array($table, GeneralUtility::trimExplode(',', $this->configuration->get('indexer.tca.allowedTables')))) {
|
||||
$this->outputLine('Table is not allowed for indexing.');
|
||||
$this->quit(1);
|
||||
|
|
|
@ -151,7 +151,8 @@ class TcaTableService
|
|||
. ' AND pages.no_search = 0'
|
||||
;
|
||||
|
||||
$userDefinedWhere = $this->configuration->getIfExists('indexer.tca.' . $this->tableName . '.additionalWhereClause');
|
||||
// TODO: There is no test covering this option yet?
|
||||
$userDefinedWhere = $this->configuration->getIfExists('indexing.' . $this->getTableName() . '.additionalWhereClause');
|
||||
if (is_string($userDefinedWhere)) {
|
||||
$whereClause .= ' AND ' . $userDefinedWhere;
|
||||
}
|
||||
|
@ -269,7 +270,7 @@ class TcaTableService
|
|||
*/
|
||||
protected function isBlackListedRootLineConfigured()
|
||||
{
|
||||
return (bool) $this->configuration->getIfExists('indexer.tca.rootLineBlacklist');
|
||||
return (bool) $this->configuration->getIfExists('indexing.' . $this->getTableName() . '.rootLineBlacklist');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -279,6 +280,6 @@ class TcaTableService
|
|||
*/
|
||||
protected function getBlackListedRootLine()
|
||||
{
|
||||
return GeneralUtility::intExplode(',', $this->configuration->getIfExists('indexer.tca.rootLineBlacklist'));
|
||||
return GeneralUtility::intExplode(',', $this->configuration->getIfExists('indexing.' . $this->getTableName() . '.rootLineBlacklist'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ namespace Leonmrni\SearchCore\Domain\Service;
|
|||
*/
|
||||
|
||||
use Leonmrni\SearchCore\Configuration\ConfigurationContainerInterface;
|
||||
use Leonmrni\SearchCore\Domain\Index\TcaIndexer;
|
||||
use TYPO3\CMS\Core\SingletonInterface as Singleton;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
|
||||
|
@ -86,7 +87,17 @@ class DataHandler implements Singleton
|
|||
*/
|
||||
public function getAllowedTablesForIndexing()
|
||||
{
|
||||
return GeneralUtility::trimExplode(',', $this->configuration->get('indexer.tca.allowedTables'));
|
||||
$tables = [];
|
||||
foreach ($this->configuration->get('indexing') as $tableName => $indexConfiguration) {
|
||||
if ($indexConfiguration['indexer'] === TcaIndexer::class) {
|
||||
$tables[] = $tableName;
|
||||
continue;
|
||||
}
|
||||
// TODO: Support custom indexer.
|
||||
// Define "interface" / option which is used.
|
||||
}
|
||||
|
||||
return $tables;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -8,20 +8,16 @@ plugin {
|
|||
}
|
||||
}
|
||||
|
||||
indexer {
|
||||
tca {
|
||||
# Pages are not supported yet, see
|
||||
# https://github.com/DanielSiepmann/search_core/issues/24 but
|
||||
# should also be added, together with additionalWhereClause
|
||||
# based on doktypes
|
||||
allowedTables = tt_content
|
||||
|
||||
tt_content {
|
||||
additionalWhereClause (
|
||||
pages.doktype NOT IN (3, 199)
|
||||
AND tt_content.CType NOT IN ('gridelements_pi1', 'list', 'div', 'menu', 'shortcut', 'search', 'login')
|
||||
)
|
||||
}
|
||||
indexing {
|
||||
# Pages are not supported yet, see
|
||||
# https://github.com/DanielSiepmann/search_core/issues/24 but
|
||||
# should also be added, together with additionalWhereClause
|
||||
# based on doktypes
|
||||
tt_content {
|
||||
additionalWhereClause (
|
||||
pages.doktype NOT IN (3, 199)
|
||||
AND tt_content.CType NOT IN ('gridelements_pi1', 'list', 'div', 'menu', 'shortcut', 'search', 'login')
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,13 +8,10 @@ plugin {
|
|||
}
|
||||
}
|
||||
|
||||
indexer {
|
||||
tca {
|
||||
allowedTables = {$plugin.tx_searchcore.settings.indexer.tca.allowedTables}
|
||||
|
||||
tt_content {
|
||||
additionalWhereClause = {$plugin.tx_searchcore.settings.indexer.tca.tt_content.additionalWhereClause}
|
||||
}
|
||||
indexing {
|
||||
tt_content {
|
||||
indexer = Leonmrni\SearchCore\Domain\Index\TcaIndexer
|
||||
additionalWhereClause = {$plugin.tx_searchcore.settings.indexing.tt_content.additionalWhereClause}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,6 @@ Indexing
|
|||
--------
|
||||
|
||||
The indexing is done by one of the available indexer. It should be possible to define the indexer to
|
||||
use for certein document types. Also it should be possible to write custom indexer to use.
|
||||
use for certain document types. Also it should be possible to write custom indexer to use.
|
||||
|
||||
Currently only the :ref:`TcaIndexer` is provided.
|
||||
|
|
|
@ -38,7 +38,7 @@ Options
|
|||
|
||||
The following section contains the different options, e.g. for :ref:`connections` and
|
||||
:ref:`indexer`: ``plugin.tx_searchcore.settings.connection`` or
|
||||
``plugin.tx_searchcore.settings.index``.
|
||||
``plugin.tx_searchcore.settings.indexing``.
|
||||
|
||||
.. _configuration_options_connection:
|
||||
|
||||
|
@ -106,8 +106,9 @@ Configured as::
|
|||
plugin {
|
||||
tx_searchcore {
|
||||
settings {
|
||||
indexer {
|
||||
indexerName {
|
||||
indexing {
|
||||
identifier {
|
||||
indexer = Fully Qualified Classname
|
||||
// the settings
|
||||
}
|
||||
}
|
||||
|
@ -115,26 +116,10 @@ Configured as::
|
|||
}
|
||||
}
|
||||
|
||||
Where ``indexerName`` is one of the available :ref:`indexer`.
|
||||
Where ``identifier`` is up to you, but should match table names to make :ref:`TcaIndexer` work.
|
||||
|
||||
The following settings are available. For each setting its documented which indexer consumes it.
|
||||
|
||||
.. _allowedTables:
|
||||
|
||||
``allowedTables``
|
||||
"""""""""""""""""
|
||||
|
||||
Used by: :ref:`TcaIndexer`.
|
||||
|
||||
Defines which TYPO3 tables are allowed to be indexed. Only white listed tables will be processed
|
||||
through Command Line Interface and Hooks.
|
||||
|
||||
Contains a comma separated list of table names. Spaces are trimmed.
|
||||
|
||||
Example::
|
||||
|
||||
plugin.tx_searchcore.settings.indexer.tca.allowedTables = tt_content, fe_users
|
||||
|
||||
.. _rootLineBlacklist:
|
||||
|
||||
``rootLineBlacklist``
|
||||
|
@ -151,7 +136,7 @@ The following settings are available. For each setting its documented which inde
|
|||
|
||||
Example::
|
||||
|
||||
plugin.tx_searchcore.settings.index.tca.rootLineBlacklist = 3, 10, 100
|
||||
plugin.tx_searchcore.settings.indexing.<identifier>.rootLineBlacklist = 3, 10, 100
|
||||
|
||||
Also it's possible to define some behaviour for the different document types. In context of TYPO3
|
||||
tables are used as document types 1:1. It's possible to configure different tables. The following
|
||||
|
@ -170,7 +155,7 @@ options are available:
|
|||
|
||||
Example::
|
||||
|
||||
plugin.tx_searchcore.settings.index.tca.tt_content.additionalWhereClause = tt_content.CType NOT IN ('gridelements_pi1', 'list', 'div', 'menu')
|
||||
plugin.tx_searchcore.settings.indexing.<identifier>.additionalWhereClause = tt_content.CType NOT IN ('gridelements_pi1', 'list', 'div', 'menu')
|
||||
|
||||
.. attention::
|
||||
|
||||
|
|
|
@ -8,9 +8,9 @@ plugin {
|
|||
}
|
||||
}
|
||||
|
||||
indexer {
|
||||
tca {
|
||||
allowedTables = tt_content
|
||||
indexing {
|
||||
tt_content {
|
||||
indexer = Leonmrni\SearchCore\Domain\Index\TcaIndexer
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
plugin {
|
||||
tx_searchcore {
|
||||
settings {
|
||||
indexer {
|
||||
tca {
|
||||
indexing {
|
||||
tt_content {
|
||||
rootLineBlacklist = 3
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
plugin {
|
||||
tx_searchcore {
|
||||
settings {
|
||||
indexer {
|
||||
tca {
|
||||
tt_content {
|
||||
additionalWhereClause = tt_content.CType NOT IN ('div')
|
||||
}
|
||||
indexing {
|
||||
tt_content {
|
||||
additionalWhereClause = tt_content.CType NOT IN ('div')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue