Extend Solr search: content coverage, 14.0.2, news recency, result images

- Index the text columns of the market/solution Content Blocks and the
  vitec_items/vitec_faq_items collection children; story documents now
  include their body (inline tt_content children via
  tx_vitec_usecase_content, same per-element extraction as pages) -
  stories were indexed with subtitle and teaser only until now
- Upgrade EXT:solr 14.0.0-RC1 -> 14.0.2 final (the Solr image moved to a
  fresh volume because the configset changed; synonyms restored via REST)
- News decay with age by publication date: crdate is the import date, so
  news map datetime to created; boost function gated to news only
- Results carry `image`: processed 640px tile image per type,
  root-relative, null for pages and downloads
- Spec v1.21: 7.16 states the /_json prefix and lists `solution` in the
  type vocabulary; footer had been stuck at v1.19
- suggest-demo.html fetches through /_json after the URL swap
This commit is contained in:
orasche committed 2026-10-07 16:22:50 +02:00
1 parent 8e67f5db23
commit 9b1ad202a9
7 files changed
+242 -23

No files matched your search

+2 -2
View File
@@ -23,8 +23,8 @@
<meta name="twitter:description" content="Enterprise IPTV, video streaming, and digital signage solutions." />
<link rel="icon" type="image/svg+xml" href="/fileadmin/icons/favicon.ico" />
<title>VITEC</title>
<script type="module" crossorigin src="/_frontend/assets/index-BpTqLcih.js"></script>
<link rel="stylesheet" crossorigin href="/_frontend/assets/index-CAiVTATb.css">
<script type="module" crossorigin src="/_frontend/assets/index-CEaqwHyi.js"></script>
<link rel="stylesheet" crossorigin href="/_frontend/assets/index-CgBOr71d.css">
</head>
<body>
<div id="page"></div>␍
+2 -2
View File
@@ -81,7 +81,7 @@
const val = input.value.trim();
if (val.length < 2) { dd.classList.remove('open'); return; }
debounceTimer = setTimeout(async () => {
const url = '/search?type=7384&tx_solr[queryString]=' + encodeURIComponent(val);
const url = '/_json/search?type=7384&tx_solr[queryString]=' + encodeURIComponent(val);
const j = await (await fetch(url)).json();
const terms = Object.entries(j.suggestions || {});
dd.innerHTML = terms.map(([t, c]) =>
@@ -106,7 +106,7 @@
// ---- Suche: GET /search?q=...&filter=...&page=... ----
async function runSearch(q, filter, page) {
if (!q) return;
const url = '/search?q=' + encodeURIComponent(q)
const url = '/_json/search?q=' + encodeURIComponent(q)
+ (filter ? '&filter=' + filter : '') + (page > 1 ? '&page=' + page : '');
const json = await (await fetch(url)).json();
const s = json.content.colPos0[0].content.search;