[!!!][TASK] Remove cHash calculation in indexed search 84/61284/5
authorBenni Mack <benni@typo3.org>
Sat, 13 Jul 2019 07:06:31 +0000 (09:06 +0200)
committerAndreas Fernandez <a.fernandez@scripting-base.de>
Sat, 13 Jul 2019 12:20:55 +0000 (14:20 +0200)
cHash is now added automatically when a URL is generated.
The relevant query parameters when indexing
are stored in "static_page_arguments", which allows
to remove the database field "cHashParams".

Therefor it is not necessary anymore to configure if
cHash should be taken into account when creating
a configuration for indexed search.

Instead, when linking to a page on a search result,
the page arguments are added. In addition, when
pages are indexed, only the static page arguments
are evaluated.

Debug Information when indexing is also adding
data more sensibly via json_encode/decode.

Effectively, this means that specific handling
for cHash resolving is fully removed from
EXT:indexed_search.

Related: #87193
Resolves: #88741
Releases: master
Change-Id: I84738612d42615a3ac24d271c5509b52467d81af
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61284
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
20 files changed:
typo3/sysext/core/Documentation/Changelog/master/Breaking-87193-DeprecatedFunctionalityRemoved.rst
typo3/sysext/core/Documentation/Changelog/master/Breaking-88741-CHashCalculationInIndexedSearchRemoved.rst [new file with mode: 0644]
typo3/sysext/indexed_search/Classes/Controller/AdministrationController.php
typo3/sysext/indexed_search/Classes/Controller/SearchController.php
typo3/sysext/indexed_search/Classes/Domain/Repository/AdministrationRepository.php
typo3/sysext/indexed_search/Classes/Domain/Repository/IndexSearchRepository.php
typo3/sysext/indexed_search/Classes/Example/CrawlerHook.php
typo3/sysext/indexed_search/Classes/Hook/CrawlerHook.php
typo3/sysext/indexed_search/Classes/Indexer.php
typo3/sysext/indexed_search/Configuration/TCA/index_config.php
typo3/sysext/indexed_search/Documentation/AnalysingIndexedData/Index.rst
typo3/sysext/indexed_search/Documentation/DatabaseTables/IndexPhash/Index.rst
typo3/sysext/indexed_search/Resources/Private/Language/locallang.xlf
typo3/sysext/indexed_search/Resources/Private/Language/locallang_csh_indexcfg.xlf
typo3/sysext/indexed_search/Resources/Private/Language/locallang_db.xlf
typo3/sysext/indexed_search/Resources/Private/Templates/Administration/ExternalDocuments.html
typo3/sysext/indexed_search/Resources/Private/Templates/Administration/Pages.html
typo3/sysext/indexed_search/ext_tables.sql
typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodArgumentDroppedMatcher.php
typo3/sysext/install/Configuration/ExtensionScanner/Php/PropertyPublicMatcher.php

index 86feb60..81ba859 100644 (file)
@@ -1470,6 +1470,7 @@ The following database fields have been removed:
 
 * `pages.alias`
 * `pages.t3ver_label`
+* `index_phash.cHashParams`
 * `index_phash.data_page_reg1`
 * `sys_category.t3ver_label`
 * `sys_collection.t3ver_label`
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-88741-CHashCalculationInIndexedSearchRemoved.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-88741-CHashCalculationInIndexedSearchRemoved.rst
new file mode 100644 (file)
index 0000000..e3438ba
--- /dev/null
@@ -0,0 +1,60 @@
+.. include:: ../../Includes.txt
+
+==============================================================
+Breaking: #88741 - cHash calculation in indexed search removed
+==============================================================
+
+See :issue:`88741`
+
+Description
+===========
+
+When indexing a page, the indexer of `Indexed search` previously kept the used cHash and the
+used "cHashParams" for storing search entries. This is not necessary anymore, as Site Handling now
+contains the relevant arguments already in the search entry as well. This can be removed now.
+
+In addition, when setting up a Indexing configuration, the option to respect cHash is removed,
+as this is done automatically when needed.
+
+The public property :php:`TYPO3\CMS\IndexedSearch\Indexer->cHashParams` has been removed.
+
+The sixth method argument of :php:`TYPO3\CMS\IndexedSearch\Indexer->backend_initIndexer()`
+has been removed.
+
+The following database fields are unused and have been removed:
+
+* index_config.chashcalc
+* index_phash.cHashParams
+
+The database field `index_debug.debuginfo` now contains data stored in a JSON-formatted string
+instead of a serialized PHP string.
+
+
+Impact
+======
+
+Manual database queries accessing the database fields will result in SQL errors.
+
+In addition, accessing the removed property or using the sixth argument of the changed public method
+will have no effect anymore.
+
+
+Affected Installations
+======================
+
+TYPO3 installations using Indexed Search and custom configuration or extending functionality
+of Indexed Search.
+
+
+Migration
+=========
+
+No migration needed, as everything works as before, as the data is now stored in
+the database field as JSON-encoded string `index_phash.static_page_arguments`.
+
+In case of using debug information for Indexed Search (index with enabled debug information),
+where data was previously stored in `index_debug.debuginfo` as serialized PHP string,
+indexing needs to be rebuilt, but only to render the debug information properly in the TYPO3 Backend
+module. If debug information is not enabled, re-indexing is not necessary.
+
+.. index:: Database, PHP-API, PartiallyScanned, ext:indexed_search
\ No newline at end of file
index 91cc60c..485640b 100644 (file)
@@ -287,7 +287,7 @@ class AdministrationController extends ActionController
 
         $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('index_debug');
         $debugRow = $queryBuilder
-            ->select('*')
+            ->select('debuginfo')
             ->from('index_debug')
             ->where(
                 $queryBuilder->expr()->eq(
@@ -296,11 +296,11 @@ class AdministrationController extends ActionController
                 )
             )
             ->execute()
-            ->fetchAll();
+            ->fetch();
         $debugInfo = [];
         $lexer = '';
         if (is_array($debugRow)) {
-            $debugInfo = unserialize($debugRow[0]['debuginfo']);
+            $debugInfo = json_decode($debugRow['debuginfo'], true);
             $lexer = $debugInfo['lexer'];
             unset($debugInfo['lexer']);
         }
index 72872b1..1dbb728 100644 (file)
@@ -462,7 +462,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
         $resultData['headerOnly'] = $headerOnly;
         $resultData['CSSsuffix'] = $specRowConf['CSSsuffix'] ? '-' . $specRowConf['CSSsuffix'] : '';
         if ($this->multiplePagesType($row['item_type'])) {
-            $dat = unserialize($row['cHashParams']);
+            $dat = json_decode($row['static_page_arguments'], true);
             $pp = explode('-', $dat['key']);
             if ($pp[0] != $pp[1]) {
                 $resultData['titleaddition'] = ', ' . LocalizationUtility::translate('result.page', 'IndexedSearch') . ' ' . $dat['key'];
@@ -484,7 +484,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
             } else {
                 // Suspicious, so linking to page instead...
                 $copiedRow = $row;
-                unset($copiedRow['cHashParams']);
+                unset($copiedRow['static_page_arguments']);
                 $title = $this->linkPageATagWrap(
                     htmlspecialchars($title),
                     $this->linkPage($row['page_id'], $copiedRow)
@@ -535,7 +535,6 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
             $pathLinkData = $this->linkPage(
                 $pathId,
                 [
-                    'cHashParams' => $row['cHashParams'],
                     'data_page_type' => $row['data_page_type'],
                     'data_page_mp' => $pathMP,
                     'sys_language_uid' => $row['sys_language_uid'],
@@ -1329,9 +1328,9 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
     {
         $pageLanguage = GeneralUtility::makeInstance(Context::class)->getPropertyFromAspect('language', 'contentId', 0);
         // Parameters for link
-        $urlParameters = (array)unserialize($row['cHashParams']);
+        $urlParameters = [];
         if ($row['static_page_arguments'] !== null) {
-            $urlParameters = array_replace_recursive($urlParameters, json_decode($row['static_page_arguments'], true));
+            $urlParameters = json_decode($row['static_page_arguments'], true);
         }
         // Add &type and &MP variable:
         if ($row['data_page_mp']) {
index bbe41fc..d8ba702 100644 (file)
@@ -145,7 +145,7 @@ class AdministrationRepository
             ->groupBy(
                 'phash_grouping',
                 'phash',
-                'cHashParams',
+                'static_page_arguments',
                 'data_filename',
                 'data_page_id',
                 'data_page_type',
@@ -329,7 +329,7 @@ class AdministrationRepository
             ->groupBy(
                 'phash_grouping',
                 'phash',
-                'cHashParams',
+                'static_page_arguments',
                 'data_filename',
                 'data_page_id',
                 'data_page_type',
@@ -445,13 +445,11 @@ class AdministrationRepository
     protected function addAdditionalInformation(array &$row)
     {
         $grListRec = $this->getGrlistRecord($row['phash']);
-        $unserializedCHashParams = unserialize($row['cHashParams']);
         $row['static_page_arguments'] = $row['static_page_arguments'] ? json_decode($row['static_page_arguments'], true) : null;
 
         $row['numberOfWords'] = $this->getNumberOfWords($row['phash']);
         $row['numberOfSections'] = $this->getNumberOfSections($row['phash']);
         $row['numberOfFulltext'] = $this->getNumberOfFulltextRecords($row['phash']);
-        $row['cHashParams'] = !empty($unserializedCHashParams) ? $unserializedCHashParams : '';
         $row['grList'] = $grListRec;
     }
 
@@ -496,7 +494,7 @@ class AdministrationRepository
                 'ISEC.uniqid',
                 'IP.phash',
                 'IP.phash_grouping',
-                'IP.cHashParams',
+                'IP.static_page_arguments',
                 'IP.data_filename',
                 'IP.data_page_id',
                 'IP.data_page_type',
@@ -531,7 +529,7 @@ class AdministrationRepository
             ->groupBy(
                 'IP.phash',
                 'IP.phash_grouping',
-                'IP.cHashParams',
+                'IP.static_page_arguments',
                 'IP.data_filename',
                 'IP.data_page_id',
                 'IP.data_page_type',
index d7e0cd3..44674cb 100644 (file)
@@ -555,7 +555,6 @@ class IndexSearchRepository
             'IP.parsetime',
             'IP.sys_language_uid',
             'IP.item_crdate',
-            'IP.cHashParams',
             'IP.externalUrl',
             'IP.recordUid',
             'IP.freeIndexUid',
@@ -1016,7 +1015,6 @@ class IndexSearchRepository
                 'IP.parsetime',
                 'IP.sys_language_uid',
                 'IP.item_crdate',
-                'IP.cHashParams',
                 'IP.externalUrl',
                 'IP.recordUid',
                 'IP.freeIndexUid',
index 096ef1f..c85fbf0 100644 (file)
@@ -81,7 +81,7 @@ class CrawlerHook
                     // Prepare indexer (make instance, initialize it, set special features for indexing parameterized content - probably none of this should be changed by you) [DON'T CHANGE]:
                     /** @var Indexer $indexerObj */
                     $indexerObj = GeneralUtility::makeInstance(Indexer::class);
-                    $indexerObj->backend_initIndexer($cfgRec['pid'], 0, $sys_language_uid, '', $rl, $GETparams, false);
+                    $indexerObj->backend_initIndexer($cfgRec['pid'], 0, $sys_language_uid, '', $rl, $GETparams);
                     $indexerObj->backend_setFreeIndexUid($cfgRec['uid'], $cfgRec['set_id']);
                     $indexerObj->forceIndexing = true;
                     // Indexing the content of the item (see \TYPO3\CMS\IndexedSearch\Indexer::backend_indexAsTYPO3Page() for options)
index 9d51667..93f7e95 100644 (file)
@@ -667,7 +667,7 @@ class CrawlerHook
         // (Re)-Indexing a row from a table:
         $indexerObj = GeneralUtility::makeInstance(\TYPO3\CMS\IndexedSearch\Indexer::class);
         parse_str(str_replace('###UID###', $r['uid'], $cfgRec['get_params']), $GETparams);
-        $indexerObj->backend_initIndexer($cfgRec['pid'], 0, $sys_language_uid, '', $rl, $GETparams, (bool)$cfgRec['chashcalc']);
+        $indexerObj->backend_initIndexer($cfgRec['pid'], 0, $sys_language_uid, '', $rl, $GETparams);
         $indexerObj->backend_setFreeIndexUid($cfgRec['uid'], $cfgRec['set_id']);
         $indexerObj->forceIndexing = true;
         $theContent = '';
index 097ae77..f4f556c 100644 (file)
@@ -24,7 +24,6 @@ use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Routing\PageArguments;
 use TYPO3\CMS\Core\TimeTracker\TimeTracker;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Core\Utility\HttpUtility;
 use TYPO3\CMS\Core\Utility\MathUtility;
 use TYPO3\CMS\Core\Utility\PathUtility;
 use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
@@ -182,15 +181,6 @@ class Indexer
     public $indexExternalUrl_content = '';
 
     /**
-     * cHash params array
-     *
-     * @var array
-     */
-    public $cHashParams = [];
-
-    /**
-     * cHashparams array
-     *
      * @var int
      */
     public $freqRange = 32000;
@@ -288,10 +278,6 @@ class Indexer
                             // MP variable, if any (Mount Points)
                             // Group list
                             $this->conf['gr_list'] = implode(',', GeneralUtility::makeInstance(Context::class)->getPropertyFromAspect('frontend.user', 'groupIds', [0, -1]));
-                            // cHash string for additional parameters
-                            $this->conf['cHash'] = $pObj->cHash;
-                            // cHash array with additional parameters
-                            $this->conf['cHash_array'] = $pObj->cHash_array;
                             // page arguments array
                             $this->conf['staticPageArguments'] = [];
                             /** @var PageArguments $pageArguments */
@@ -361,10 +347,9 @@ class Indexer
      * @param int $sys_language_uid sys_language uid, typically &L=
      * @param string $MP The MP variable (Mount Points), &MP=
      * @param array $uidRL Rootline array of only UIDs.
-     * @param array $cHash_array Array of GET variables to register with this indexing
-     * @param bool $createCHash If set, calculates a cHash value from the $cHash_array. Probably you will not do that since such cases are indexed through the frontend and the idea of this interface is to index non-cacheable pages from the backend!
+     * @param array $queryArguments Array of GET variables to register with this indexing
      */
-    public function backend_initIndexer($id, $type, $sys_language_uid, $MP, $uidRL, $cHash_array = [], $createCHash = false)
+    public function backend_initIndexer($id, $type, $sys_language_uid, $MP, $uidRL, $queryArguments = [])
     {
         // Setting up internal configuration from config array:
         $this->conf = [];
@@ -379,17 +364,7 @@ class Indexer
         // MP variable, if any (Mount Points) (string)
         $this->conf['gr_list'] = '0,-1';
         // Group list (hardcoded for now...)
-        // cHash values:
-        if ($createCHash) {
-            /* @var \TYPO3\CMS\Frontend\Page\CacheHashCalculator $cacheHash */
-            $cacheHash = GeneralUtility::makeInstance(\TYPO3\CMS\Frontend\Page\CacheHashCalculator::class);
-            $this->conf['cHash'] = $cacheHash->generateForParameters(HttpUtility::buildQueryString($cHash_array));
-        } else {
-            $this->conf['cHash'] = '';
-        }
-        // cHash string for additional parameters
-        $this->conf['cHash_array'] = $cHash_array;
-        // Array of the additional parameters
+        $this->conf['staticPageArguments'] = $queryArguments;
         // Set to defaults
         $this->conf['freeIndexUid'] = 0;
         $this->conf['freeIndexSetId'] = 0;
@@ -472,15 +447,6 @@ class Indexer
      */
     public function init()
     {
-        // Initializing:
-        $this->cHashParams = $this->conf['cHash_array'];
-        if (is_array($this->cHashParams) && !empty($this->cHashParams)) {
-            if ($this->conf['cHash']) {
-                // Add this so that URL's come out right...
-                $this->cHashParams['cHash'] = $this->conf['cHash'];
-            }
-            unset($this->cHashParams['encryptionKey']);
-        }
         // Setting phash / phash_grouping which identifies the indexed page based on some of these variables:
         $this->setT3Hashes();
         // Indexer configuration from Extension Manager interface:
@@ -1421,7 +1387,6 @@ class Indexer
         $fields = [
             'phash' => $this->hash['phash'],
             'phash_grouping' => $this->hash['phash_grouping'],
-            'cHashParams' => serialize($this->cHashParams),
             'static_page_arguments' => json_encode($this->conf['staticPageArguments']),
             'contentHash' => $this->content_md5h,
             'data_page_id' => $this->conf['id'],
@@ -1450,8 +1415,7 @@ class Indexer
                 ->getConnectionForTable('index_phash');
             $connection->insert(
                 'index_phash',
-                $fields,
-                ['cHashParams' => Connection::PARAM_LOB]
+                $fields
             );
         }
         // PROCESSING index_section
@@ -1476,8 +1440,7 @@ class Indexer
         if ($this->indexerConfig['debugMode']) {
             $fields = [
                 'phash' => $this->hash['phash'],
-                'debuginfo' => serialize([
-                    'cHashParams' => $this->cHashParams,
+                'debuginfo' => json_encode([
                     'external_parsers initialized' => array_keys($this->external_parsers),
                     'conf' => array_merge($this->conf, ['content' => substr($this->conf['content'], 0, 1000)]),
                     'contentParts' => array_merge($this->contentParts, ['body' => substr($this->contentParts['body'], 0, 1000)]),
@@ -1574,7 +1537,7 @@ class Indexer
      *
      * @param array $hash Array with phash and phash_grouping keys for file
      * @param string $file File name
-     * @param array $subinfo Array of "cHashParams" for files: This is for instance the page index for a PDF file (other document types it will be a zero)
+     * @param array $subinfo Array of "static_page_arguments" for files: This is for instance the page index for a PDF file (other document types it will be a zero)
      * @param string $ext File extension determining the type of media.
      * @param int $mtime Modification time of file.
      * @param int $ctime Creation time of file.
@@ -1595,7 +1558,7 @@ class Indexer
         $fields = [
             'phash' => $hash['phash'],
             'phash_grouping' => $hash['phash_grouping'],
-            'cHashParams' => serialize($subinfo),
+            'static_page_arguments' => json_encode($subinfo),
             'contentHash' => $content_md5h,
             'data_filename' => $file,
             'item_type' => $storeItemType,
@@ -1618,8 +1581,7 @@ class Indexer
                 ->getConnectionForTable('index_phash');
             $connection->insert(
                 'index_phash',
-                $fields,
-                ['cHashParams' => Connection::PARAM_LOB]
+                $fields
             );
         }
         // PROCESSING index_fulltext
@@ -1640,8 +1602,8 @@ class Indexer
         if ($this->indexerConfig['debugMode']) {
             $fields = [
                 'phash' => $hash['phash'],
-                'debuginfo' => serialize([
-                    'cHashParams' => $subinfo,
+                'debuginfo' => json_encode([
+                    'static_page_arguments' => $subinfo,
                     'contentParts' => array_merge($contentParts, ['body' => substr($contentParts['body'], 0, 1000)]),
                     'logs' => $this->internal_log,
                     'lexer' => $this->lexerObj->debugString
@@ -2203,7 +2165,6 @@ class Indexer
             'type' => (int)$this->conf['type'],
             'sys_lang' => (int)$this->conf['sys_language_uid'],
             'MP' => (string)$this->conf['MP'],
-            'cHash' => $this->cHashParams,
             'staticPageArguments' => $this->conf['staticPageArguments'],
         ];
         // Set grouping hash (Identifies a "page" combined of id, type, language, mountpoint and cHash parameters):
index 0646377..3355251 100644 (file)
@@ -18,7 +18,7 @@ return [
         ]
     ],
     'interface' => [
-        'showRecordFieldList' => 'hidden,starttime,title,description,type,depth,table2index,alternative_source_pid,get_params,chashcalc,filepath,extensions'
+        'showRecordFieldList' => 'hidden,starttime,title,description,type,depth,table2index,alternative_source_pid,get_params,filepath,extensions'
     ],
     'columns' => [
         'hidden' => [
@@ -150,19 +150,6 @@ return [
                 'size' => 30
             ]
         ],
-        'chashcalc' => [
-            'label' => 'LLL:EXT:indexed_search/Resources/Private/Language/locallang_db.xlf:index_config.chashcalc',
-            'config' => [
-                'type' => 'check',
-                'renderType' => 'checkboxToggle',
-                'items' => [
-                    [
-                        0 => '',
-                        1 => '',
-                    ],
-                ],
-            ],
-        ],
         'filepath' => [
             'label' => 'LLL:EXT:indexed_search/Resources/Private/Language/locallang_db.xlf:index_config.filepath',
             'config' => [
@@ -265,7 +252,7 @@ return [
         '1' => [
             'showitem' => '
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-                    type,title,timer_next_indexing, timer_offset, timer_frequency, set_id, table2index, alternative_source_pid, fieldlist, get_params, chashcalc,recordsbatch,records_indexonchange,
+                    type,title,timer_next_indexing, timer_offset, timer_frequency, set_id, table2index, alternative_source_pid, fieldlist, get_params,recordsbatch,records_indexonchange,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
                     hidden,starttime,
                 --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
index 276f685..446f00f 100644 (file)
@@ -19,7 +19,7 @@ the TYPO3 indexer MUST take the following into account:
 - Only cached pages can be indexed.Pages with dynamic content - such as
   search pages etc - should supply their own search engine for lookup in
   specific tables. Another option is to selectively allow certain of
-  those "dynamic" pages to be cached anyway (see the cHashParams
+  those "dynamic" pages to be cached anyway (see the static_page_arguments
   concept used by some plugins)
 
 - Pages in more than one language must be indexed separately as
@@ -27,13 +27,13 @@ the TYPO3 indexer MUST take the following into account:
 
 - Pages with message boards may have multiple indexed versions based on
   what is displayed on the page: The overview or a single message board
-  item? This is determined by the cHashParams value.
+  item? This is determined by the static_page_arguments value.
 
 - Pages with access restricted to must be observed!
 
 - Because pages can contain different content whether a user is logged
   in or not and even based on which groups he is a member of, a single
-  page (identified by the combination of id/type/language/cHashParams)
+  page (identified by the combination of id/type/language/static_page_arguments)
   may even be available in more than one indexed version based on the
   user-groups. But while the same page may have different content based
   on the user-groups (and so must be indexed once for each) such pages
@@ -61,7 +61,7 @@ picture below while reading the bulletlist here:
      (will be re-indexed on the next hit).
 
    - pHash: The "id" of the search row. The hash is calculated based on
-     id/type/language/MP/cHashParams/gr\_list of the page when indexed. For
+     id/type/language/MP/static_page_arguments/gr\_list of the page when indexed. For
      external media this is based on filepath/page-interval (for PDF's
      only)
 
@@ -80,8 +80,8 @@ picture below while reading the bulletlist here:
    - grlist: This is the gr\_list of the user which initiated the indexing
      operation.
 
-   - cHashParams: Additional parameters which are identifying the page in
-     addition to the id/type number which usually does that.
+   - static_page_arguments: Additional parameters which are identifying the
+     page in addition to the id/type number which usually does that.
 
 #. The page "Content elements" has one indexed version. The page-id of
    the root-page is "1" and the page on level-1 in the rootline had the
@@ -171,7 +171,7 @@ picture below while reading the bulletlist here:
    Several complex scenarios
 
 On the image below we are looking at another scenario. In this case
-the cHashParams is obviously used by the plugin "tt\_board". The
+the static_page_arguments is obviously used by the plugin "tt\_board". The
 plugin has been constructed so intelligently that it links to the
 messages in the message board without disabling the normal page-cache
 but rather sending the tt\_board\_uid parameter along with a so called
@@ -187,7 +187,7 @@ in the message board - it also means we can index the page!
 
 As you see the main board page showing the list of messages/threads
 ("Sourcream and Oni...") is indexed without any values for the
-parameter tt\_board\_uid (the cHashParams field is blank). Then it has
+parameter tt\_board\_uid (static_page_arguments). Then it has
 also been indexed one time for each display of a message. In a search
 result any of these five rows may appear as an independent result row
 - after all they are to be regarded as a single page with unique
index fb11607..2c4899d 100644 (file)
@@ -32,14 +32,14 @@ phash
          This is a unique representation of the 'page' indexed.
 
          For TYPO3 pages this is a serialization of id,type,gr\_list (see
-         later), MP and cHashParams (which enables 'subcaching' with extra
+         later), MP and additional query parameters (which enables 'subcaching' with extra
          parameters). This concept is also used for TYPO3 caching (although the
          caching hash includes the all-array and thus takes the template into
          account, which this hash does not! It's expected that template changes
          through conditions would not seriously alter the page content)
 
          For external media this is a serialization of 1) unique filename id,
-         2) any subpage indication (parallel to cHashParams). gr\_list is NOT
+         2) any subpage indication (parallel to query parameters). gr\_list is NOT
          taken into consideration here!
 
 
@@ -113,18 +113,18 @@ tstamp
 
 
 
-.. _index-phash-chashparams:
+.. _index-phash-static_page_arguments:
 
-cHashParams
-"""""""""""
+static_page_arguments
+"""""""""""""""""""""
 
 .. container:: table-row
 
    Field
-         cHashParams
+         static_page_arguments
 
    Description
-         The cHashParams.
+         The Static Page Arguments - URL parameter that are used for caching.
 
          For TYPO3 pages: These are used to re-generate the actual url of the
          TYPO3 page in question
index c355337..c462a57 100644 (file)
@@ -363,9 +363,6 @@ All search words are converted to lowercase.
                        <trans-unit id="field.sub">
                                <source>Sub</source>
                        </trans-unit>
-                       <trans-unit id="field.cHash">
-                               <source>Chash</source>
-                       </trans-unit>
                        <trans-unit id="field.staticPageArguments">
                                <source>Static Page Arguments</source>
                        </trans-unit>
index df329e6..180dc0e 100644 (file)
@@ -97,13 +97,6 @@ Example value: "&amp;showUid=###UID###"</source>
                                <source>index_config:table2index</source>
                                <note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
                        </trans-unit>
-                       <trans-unit id="chashcalc.description">
-                               <source>If checked, the URL in the search result for records will be encoded with a "&amp;cHash" parameter to make it cacheable. Use only if supported by the plugin!</source>
-                       </trans-unit>
-                       <trans-unit id="_chashcalc.seeAlso">
-                               <source>index_config:table2index</source>
-                               <note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
-                       </trans-unit>
                        <trans-unit id="recordsbatch.description">
                                <source>Enter how many records to index for each instance of the indexing process (how many per minute). Default is 100 records.</source>
                        </trans-unit>
index 2531d85..edebe6d 100644 (file)
@@ -54,9 +54,6 @@
                        <trans-unit id="index_config.externalUrl">
                                <source>External URL (eg. "http://www.domain.org/")</source>
                        </trans-unit>
-                       <trans-unit id="index_config.chashcalc">
-                               <source>Calculate cHash (force caching)?</source>
-                       </trans-unit>
                        <trans-unit id="index_config.filepath">
                                <source>Filepath</source>
                        </trans-unit>
index f0db443..bd9e118 100644 (file)
@@ -16,7 +16,7 @@
                     <th><f:translate key="field.parseTime" /></th>
                     <th><f:translate key="field.groups" /></th>
                     <th><f:translate key="field.sub" /></th>
-                    <th><f:translate key="field.cHash" /></th>
+                    <th><f:translate key="field.staticPageArguments" /></th>
                     <th><f:translate key="field.pHash" /></th>
                     <th><f:translate key="field.path" /></th>
                 </tr>
@@ -49,8 +49,8 @@
                         <td>{data.numberOfSections}/{data.grList.0.pcount}/{data.numberOfFulltext}</td>
                         <td>{data.pcount}</td>
                         <td>
-                            <f:if condition="{data.cHashParams}">
-                                <f:for each="{data.cHashParams}" as="value" key="key">
+                            <f:if condition="{data.static_page_arguments}">
+                                <f:for each="{data.static_page_arguments}" as="value" key="key">
                                     {key}={value}<br>
                                 </f:for>
                             </f:if>
index 10f4ae3..6468469 100644 (file)
@@ -20,7 +20,6 @@
                     <th><f:translate key="field.groups" /></th>
                     <th><f:translate key="field.sub" /></th>
                     <th><f:translate key="field.language" /></th>
-                    <th><f:translate key="field.cHash" /></th>
                     <th><f:translate key="field.staticPageArguments" /></th>
                     <th><f:translate key="field.pHash" /></th>
                 </tr>
                     <td>{data.pcount} / {is:format.groupList(groups:data.grList)}</td>
                     <td>{data.sys_language_uid}</td>
                     <td>
-                        <f:if condition="{data.cHashParams}">
-                            <f:for each="{data.cHashParams}" as="value" key="key">
-                                {key}={value}<br>
-                            </f:for>
-                        </f:if>
-                    </td>
-                    <td>
                         <f:if condition="{data.static_page_arguments}">
                             <f:for each="{data.static_page_arguments}" as="value" key="key">
                                 {key}={value}<br>
index 0b06b01..dbc1233 100644 (file)
@@ -5,7 +5,6 @@
 CREATE TABLE index_phash (
   phash int(11) DEFAULT '0' NOT NULL,
   phash_grouping int(11) DEFAULT '0' NOT NULL,
-  cHashParams blob,
   static_page_arguments blob,
   data_filename varchar(1024) DEFAULT '' NOT NULL,
   data_page_id int(11) unsigned DEFAULT '0' NOT NULL,
@@ -141,7 +140,6 @@ CREATE TABLE index_config (
   fieldlist varchar(255) DEFAULT '' NOT NULL,
   externalUrl varchar(255) DEFAULT '' NOT NULL,
   indexcfgs text,
-  chashcalc tinyint(3) unsigned DEFAULT '0' NOT NULL,
   filepath varchar(255) DEFAULT '' NOT NULL,
   extensions varchar(255) DEFAULT '' NOT NULL,
 
index 1068088..77aa832 100644 (file)
@@ -235,4 +235,10 @@ return [
             'Deprecation-88567-GLOBALS_LOCAL_LANG.rst',
         ],
     ],
+    'TYPO3\CMS\IndexedSearch\Indexer->backend_initIndexer' => [
+        'maximumNumberOfArguments' => 5,
+        'restFiles' => [
+            'Breaking-88741-CHashCalculationInIndexedSearchRemoved.rst',
+        ],
+    ],
 ];
index 6bf3d48..4c46915 100644 (file)
@@ -559,4 +559,9 @@ return [
             'Deprecation-88559-TSFE-sys_language_isocode.rst',
         ],
     ],
+    'TYPO3\CMS\IndexedSearch\Indexer->cHashParams' => [
+        'restFiles' => [
+            'Breaking-88741-CHashCalculationInIndexedSearchRemoved.rst',
+        ],
+    ],
 ];