Index PDF and Office file contents via Apache Tika
Solr 10 dropped the ExtractingRequestHandler, so a dedicated Tika
container on the Solr VPS (Caddy route /tika/*, own basic-auth
credential; Tika itself has no auth) extracts file text during
indexing: TikaDownloadContentIndexer listens on
BeforeDocumentIsProcessedForIndexingEvent, resolves the file through
the existing DownloadFileResolver and appends the text (mime
whitelist, 30 MB cap, 100k chars, fail-soft) to the document's content
field. Extractions are cached in var/tika-cache keyed on
path+size+mtime - a full re-index of 177 downloads drops from 2:12 min
to 27 s, replacing a file re-extracts naturally. Datasheet
specifications ("625i", "genlock") are now searchable. Spec v1.15.
This commit is contained in:
1 parent
5bb4e374b4
commit
8c881d153c
9 files changed
+499
-6
No files matched your search
@@ -67,6 +67,21 @@ tt_content {
|
||||
}
|
||||
}
|
||||
|
||||
# Product Finder - only the category hierarchy for the filter selects.
|
||||
# Placed once above the product lists; the front end filters the products
|
||||
# those lists already delivered, client side, via ?cat= and ?subcat=.
|
||||
vitec_productfinder < lib.contentElementWithHeader
|
||||
vitec_productfinder {
|
||||
fields {
|
||||
content {
|
||||
fields {
|
||||
productfinder = USER
|
||||
productfinder.userFunc = Evomedien\Vitec\UserFunc\ProductFinderJsonRenderer->render
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# EXT:solr search results as JSON - the search endpoint for the React frontend
|
||||
solr_pi_results < lib.contentElementWithHeader
|
||||
solr_pi_results {
|
||||
@@ -389,7 +404,14 @@ plugin.tx_solr.index.queue {
|
||||
|
||||
products = 1
|
||||
products {
|
||||
# sys_category titles - feeds the category facet
|
||||
fields.category_stringM = SOLR_RELATION
|
||||
fields.category_stringM {
|
||||
localField = categories
|
||||
multiValue = 1
|
||||
}
|
||||
type = tx_vitec_domain_model_product
|
||||
additionalWhereClause = hideonwebsite = 0
|
||||
fields {
|
||||
title = title
|
||||
content = SOLR_CONTENT
|
||||
@@ -466,7 +488,15 @@ plugin.tx_solr.index.queue {
|
||||
|
||||
usecases = 1
|
||||
usecases {
|
||||
# market titles from the MM relation - feeds the market facet
|
||||
fields.market_stringM = SOLR_RELATION
|
||||
fields.market_stringM {
|
||||
localField = markets
|
||||
multiValue = 1
|
||||
}
|
||||
type = tx_vitec_domain_model_usecase
|
||||
# no_index is the editorial opt-out per story (concept 2026-08-20)
|
||||
additionalWhereClause = hideonwebsite = 0 AND no_index = 0
|
||||
fields {
|
||||
title = title
|
||||
content = SOLR_CONTENT
|
||||
@@ -495,6 +525,39 @@ plugin.tx_solr.index.queue {
|
||||
}
|
||||
}
|
||||
|
||||
# Solutions became indexable on 2026-09-11: the sitemap alignment gave all
|
||||
# 39 records a detail_page (and slug). Same pattern as markets.
|
||||
solutions = 1
|
||||
solutions {
|
||||
type = tx_vitec_domain_model_solution
|
||||
additionalWhereClause = detail_page > 0
|
||||
fields {
|
||||
title = title
|
||||
content = SOLR_CONTENT
|
||||
content {
|
||||
cObject = COA
|
||||
cObject {
|
||||
10 = TEXT
|
||||
10.field = subtitle
|
||||
10.noTrimWrap = || |
|
||||
20 = TEXT
|
||||
20.field = teaser
|
||||
20.noTrimWrap = || |
|
||||
30 = TEXT
|
||||
30.field = description
|
||||
30.noTrimWrap = || |
|
||||
}
|
||||
}
|
||||
url = TEXT
|
||||
url {
|
||||
typolink {
|
||||
parameter.field = detail_page
|
||||
returnLast = url
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
news = 1
|
||||
news {
|
||||
type = tx_news_domain_model_news
|
||||
@@ -580,6 +643,16 @@ plugin.tx_solr.search.faceting {
|
||||
field = type
|
||||
keepAllOptionsOnSelection = 1
|
||||
}
|
||||
market {
|
||||
label = Market
|
||||
field = market_stringM
|
||||
keepAllOptionsOnSelection = 1
|
||||
}
|
||||
category {
|
||||
label = Category
|
||||
field = category_stringM
|
||||
keepAllOptionsOnSelection = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user