Add autocomplete endpoint via EXT:solr suggest page type
GET /search?type=7384&tx_solr[queryString]=<input> answers term completions from the index (spell field) with document counts as lean JSON - no page envelope, synonyms apply automatically. Two deliberate deviations from the shipped example, which predates TYPO3 v14: the plugin runs as USER_INT (config.no_cache is gone, and a cached USER would pin the first query's suggestions for every later request), and showTopResults is off (the top-result shape is hardcoded upstream with the raw document type and full indexed content). Documented in spec v1.12 clause 7.16. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -25,7 +25,7 @@
|
||||
| 1.9 | 2026‑08‑15 | **Interface change, partly breaking.** The four list plugins were unified: every one of them now emits an object carrying `layout`, the new `showToolbar` flag and its payload array. `vitec_usecaselist` and `vitec_productlist` previously emitted a **bare array** — front ends reading them have to move one level down (7.3, 7.14, 8). New plugin **`vitec_solutionlist`** (`SolutionListJsonRenderer`, key `solutions`), the counterpart 7.13.2 had been asking for since v1.2. `tx_vitec_domain_model_usecase` gained `detail_page`, emitted as the resolved `detailUrl` in the story card shape and therefore also in the `vitec_modelcard` story branch, which had carried no link at all until now. Noted: `vitec_productlist` had a configurable `layout` that was never serialised, and its vocabulary (`0`–`3`) differs from the other lists. |
|
||||
| 1.10 | 2026‑08‑18 | **Interface change (additive).** `tx_vitec_domain_model_product` gained five fields: `heroimage` (multiple FAL images, detail payload only), the richtext fields `description2`, `capabilities` and `textrelatedproducts`, and `portfolio` (TCA `link`) — emitted as a **resolved URL** through the new `LinkResolver::typolinkUrl()`. The product payloads are specified for the first time (7.15). Links in `contentelement` / `contentelementcta` that point at a **container** now resolve its children (`items`, page‑level shape) and `background` (7.4). Two record link handlers (`download`, `product`) added to the link browser, resolved server‑side per the new Clause 9.12; new middleware `vitec/download-file` streams `/download/file/<uid>` as a forced download (5.3), file lookup consolidated into `DownloadFileResolver` — first step towards the B‑4 target (10.2). Backend‑only: `relatedprodukt` moved from the Misc tab to General. Editorial: the document footer had been stuck at v1.7 since v1.8. |
|
||||
| 1.11 | 2026‑08‑21 | **New interface: site search.** Apache Solr 10 (dedicated VPS behind an HTTPS reverse proxy) with `apache-solr-for-typo3/solr` 14.0.0-RC1. The EXT:solr results plugin `solr_pi_results` on the search page is rendered headless by `SearchJsonRenderer` (payload key `search`) - request/response contract in the new Clause 7.16. Indexed corpus: pages plus product, market (`detail_page` only), use-case, news and download records; result `type` vocabulary `page\|product\|market\|story\|news\|download`. Downloads gained the canonical route `/download/<slug>` (uid route kept for the record links) and `private_download` is now enforced by `DownloadFileResolver` (5.3, 9.12). The VITEC Set now declares the solr set as a dependency - overriding a foreign set’s TypoScript requires loading after it (5.2). Editorial: the header table had been stuck at v1.9 since v1.10. |
|
||||
| 1.12 | 2026‑08‑24 | **Interface change (additive).** The search endpoint (7.16) gained a type filter and facet counts: request parameter `filter` (a value from the `type` vocabulary; the natural name `type` is unavailable - it is TYPO3’s reserved page-type parameter), response keys `filter` (active filter or null) and `facets.type` (per-type document counts with `active` flags; counts stay complete while a filter is active, except when the filtered result is empty). Editorial baseline of 76 managed synonyms imported into `core_en` (codecs, acquired-brand names such as `exterity => avedia`, UK/US spellings, common misspellings) - synonyms apply at query time, no re-index. |
|
||||
| 1.12 | 2026‑08‑24 | **Interface change (additive).** The search endpoint (7.16) gained a type filter and facet counts: request parameter `filter` (a value from the `type` vocabulary; the natural name `type` is unavailable - it is TYPO3’s reserved page-type parameter), response keys `filter` (active filter or null) and `facets.type` (per-type document counts with `active` flags; counts stay complete while a filter is active, except when the filtered result is empty). Editorial baseline of 76 managed synonyms imported into `core_en` (codecs, acquired-brand names such as `exterity => avedia`, UK/US spellings, common misspellings) - synonyms apply at query time, no re-index. New autocomplete endpoint: the EXT:solr suggest plugin as lean JSON page type 7384, deliberately USER_INT (7.16). |
|
||||
|
||||
This document is drafted in the style of, and adopts the terminology conventions of,
|
||||
ISO/IEC/IEEE 42010 (architecture description), ISO/IEC/IEEE 26514 (information for
|
||||
@@ -974,6 +974,24 @@ hideonwebsite = 0`). Solutions are not indexed until they carry slugs or detail
|
||||
pages. Ranking boosts products (^10) and stories (^2). Every executed search is
|
||||
logged to `tx_solr_statistics` with the last two IP octets masked.
|
||||
|
||||
**Autocomplete.** `GET /search?type=7384&tx_solr[queryString]=<input>` answers as
|
||||
a lean JSON page type without the page envelope:
|
||||
|
||||
```json
|
||||
{ "suggestions": { "encoder": 118, "encoding": 171 },
|
||||
"suggestion": "enc", "documents": [], "didSecondSearch": false }
|
||||
```
|
||||
|
||||
Term completions come from the index (spell field) with document counts;
|
||||
synonyms and all indexed types are reflected automatically. The plugin is
|
||||
wired as **USER_INT** - the example shipped with EXT:solr predates TYPO3 v14
|
||||
(`config.no_cache` no longer exists), and a cached USER would pin the first
|
||||
query’s suggestions for every later request. Front ends should debounce
|
||||
(~200 ms), start at 2-3 characters, and turn a picked suggestion into a
|
||||
regular `/search?q=` request. Top-result documents are deliberately disabled
|
||||
(`showTopResults = 0`): their shape is hardcoded upstream and carries the raw
|
||||
document type and the full indexed content.
|
||||
|
||||
**Operations.** Indexing runs automatically: record and page saves enter the
|
||||
index queue, a scheduler task (Index Queue Worker, every 5 minutes) pushes them
|
||||
to Solr; the CLI command `vitec:solr-index` (with `--initialize` and `--debug`)
|
||||
|
||||
Reference in New Issue
Block a user