Instead of hardcoding and tight coupling of relation resolving, we now
provide a dataprocessor instead.
Therefore you need to configure resolving for each indexed type.
This resolves#149 and #147.
Before this change, sys_language_uid was indexed as an empty string, due
to internal used TYPO3 API.
We now skip the configure field which defines language uid. This way you
can build filter based on current language.
Resolves#148
If some issues occur outside of our extension, we might not get a valid
uid inside of our hooks. We will therefore add additional checks and
prevent any further execution.
Resolves: #112
In order to use the plugin with different configurations on same site,
we can not use ConfigurationContainerInterface as a Singleton.
This would prevents us from using different configuration setups.
Allows integrators to configure which fields should be used to produce
field "content" for indexed pages.
Before only "bodytext" was used. This is now configurable and "header"
was added to defaults.
Resolves: #134
Do not index content records of all pages while indexing pages in CMS
8.x.
We add same logic as for CMS 7.x, we extend the query to only fetch
records from current page.
Resolves: #135
Fetch sys_language_uid from database.
Until now we did not fetch system related fields from database. As there
is now a RemoveProcessor, integrators are able to remove fields.
Also providing this field enables basic multi language support.
Relates: #25
We use the cache clear hook to index pages whenever the cache was
cleared.
This makes it possible to cover some cases like changing content on a
page. But also if an integrator configures to clear additional pages.
This is limited as we can not handle cache tags at the moment.
Resolves: #131
We had some features in 7.6 support which we didn't merge up yet.
Mostly very small bug fixes or more helpful logging and processing of
elasticsearch options.
But also adding images of content elements while indexing pages.
As some search services, like elasticsearch, allow generation of a
string that should be displayed in frontend, we provide a new getter for
that.
The old existing name can be a fallback in custom implementations.
Do not limit integrator in possibilities to configure.
Therefore previously configure facets for a field need to be adjusted to
contain full configuration for elasticsearch. See changelog.
Resolves: #120
Search results are now processed through data processing by search
service. The result will be a SearchResult model from our domain. Also
SearchResult will execute new queries, e.g. from paginate widget,
through SearchService to apply data processing again.
Remove duplicate stub code to trait, to keep own logic and code clean.
Use own service to handle data processing. Classes like indexer should
not know anything about the structure and how to process the data.
Also rename record to data, as we can process just any data in form of
an array.
Relates: #116
This way injects will be resolved inside of processors, enabling
developers to inject dependencies.
We use inject instead of constructor as indexers mostly will change the
constructor and should not need to add the objectmanager.
Resolves: #117
Relations were inserted by TYPO3's DataHandler after indexing and were
therefore not indexed.
We now use a later hook after DataHandler has finished everything, so we
know that we can index. As it's not relevant, we do not differentiate
between add and update anymore, as both trigger "indexDocument" internal.
Resolves: #112
This way we need no external service.
Each developer can fully run all tests and cgl on local environment.
Also this integrated better into IDEs and editors.
Before data processing was applied for TCA only, through tca table
service.
Now it's applied much later in process and in abstract indexer.
Therefore all indexer will run data processing if configured.
Add a new processor, with docs and tests, to allow removal of fields
before sending them to search service like elasticsearch.
E.g. remove sensitive information that should not be available.
This will be the case if you add a flexform to the plugin with no value.
Then an empty filter is configured and you will not be able to submit a
value for this filter.
Allow to map search request even if no trusted properties exist.
Also cache initial call to plugin.
This allows to use GET as submit for forms with minimal arguments in
URL.
Respect the following situations during indexing:
- Page is not reachable due to broken root line.
- Page is not reachable due to being below a recycler.