ke_search_premium 

Classification

ke_search_premium

Version
Language

en

Keywords

search

Copyright

2026

Author

ke_search_premium Dev Team

License

This document is published under the Open Content License available from http://www.opencontent.org/opl.shtml

Rendered

Thu, 18 Jun 2026 15:21:35 +0000

The content of this document is related to TYPO3, a GNU/GPL CMS/Framework available from www.typo3.org.

Table of Contents

What does it do? 

ke_search_premium is a TYPO3 extension which extends ke_search with a number of additional features:

  • Custom ranking: values to push results by a fixed value
  • Boost keywords: push results by keywords
  • Distance based: Search around a location (city, zip), including Google Maps integration
  • Did you mean: Suggest correct spellings (only in german)
  • Autocomplete: Suggest search terms while typing (based on searches of other users)
  • Synonyms: Define synonyms for search terms
  • In-word-search: Find search strings inside words
  • Remote indexer: Import search results from another TYPO3 website. This feature makes it possible to search two or more TYPO3 websites using one search form.
  • Headless: Serve search results via JSON, e.g. for a Progressive Web App
  • Sphinx: Faster searching (with very large indexes) with Sphinx (needs additional server setup)

Boost Keywords 

The "boost keywords" feature allows you to boost results to a higher position in the result list by assigning keywords. If a search for this keyword is started, results containing this keyword will be ranked higher in the result list.

Use case examples 

  • A user searches for "Meier". There's a page about a person called "Meier" in the index, but there are also lots of other content containing the word "Meier" in the index. Since "Meier" is not in the title of the page (maybe the page is called "Our new CEO"), the page is not ranked very high for this search word. We want the result for the page about "Meier" to be at the top, therefore we add "Meier" as a boost keyword to the page record.
  • A user searches for "campingchair". There's a product called "campingchar" and there are also news articles, and other content containing the word "campingchair". We want the product result to be at the top, therefore we add "campingchair" as a boost keyword to that record.

Configuration 

You can enable/disable the boost keywords feature in the settings module in the extension configuration in the tab "Ranking".

Activate boost keywords in extension settings

The setting "Factor for boost keywords" allows you to define how strong the keywords should be weighted which means the higher you set this value, the stronger the "boost effect" will be.

Make sure set the sorting in the search plugin to "Relevance DOWN" in order to make the feature work!

Set sorting to relevance and boost keywords

Usage 

After activating the feature you can use the standard "keywords" field in pages and news records to add your keywords (comma-separated). The boosting effect will only work for search words matching exactly the given keywords. If in doubt which spelling or style the user will use, just add more keywords (eg "car,cars,vehicle,vehicles").

Example 

In this example we search for the word "album" in set of randomly imported articles from wikipedia.

One of the results is the article "Naimee Coleman". Without the boost keyword feature activated, this results ranks as #7 for the search word "album". We want this result to rank higher.

Search result before boosting

We now give the new record the keyword "album".

Boost keywords field in page properties

After activating the boost keywords feature (see above: "Configuration") you will have to restart the indexer.

The result does now rank higher:

Search result after boosting with factor 1

If the effect should be stronger, we can adjust the setting "Factor":

Adjusting the boost factor in extension settings

The result is now at the top of the list:

Search result after boosting with higher factor

Adding your own keywords 

If you want to add your own keywords as boost keywords or if you want to add keywords to other content types than pages or news, you will have to fill the column "boostkeywords" of the table "tx_kesearch_index" with your keywords. You can use the hooks ke_search provides. Please have a look at

Classes/Hooks/BoostKeywords.php
Copied!

Custom Ranking 

The "custom ranking" feature allows you to push certain results to the top or bottom of the result list.

This is done by giving numeric value to pages and indexer configurations. You can then configure ke_search to sort the result list using this custom value. If both (pages and indexer configuration) values are set, the will be summed up.

Use case examples 

  • Show all page records before other records (eg. files or news).
  • Show product pages on top.
  • Show pages about persons on top.
  • Show certain results at the end of the list.

Configuration 

You can enable/disable the custom ranking feature in the settings module in the extension configuration in the tab "Ranking".

Activate custom ranking in extension settings

After that please set the sorting to "Custom ranking DOWN" and "Relevance DOWN" in the plugin options (needs at least ke_search 3.1.5).

Set sorting to custom ranking and relevance

Usage 

You will find a field "Custom ranking value" in the page properties in the tab "Search" and in indexer configurations.

Custom ranking field in page properties

By setting this value, the page or the records fetched by this indexer configuration will be sorted to the very top of the result list. If both values are set, they will be summed up. You can also set negative values to push results to the end of the list.

Example 

In this example we have a page about the CTO of a company, "Mark Bristol". Search for "Bristol" shows also some news containing the word "Bristol".

Search result before custom ranking

We want to show the "CTO"-page on top of the list, thus we give it a custom ranking value of "1".

Page with custom ranking value set

After re-indexing, the page is at the top of the list. Note that this page now will always be on top of the list, whenever it appears in the search result list. If you only want to give it a push when someone searches for "Bristol" you should use the Boost Keywords feature.

Search result with custom ranking applied

Adding your own custom ranking values 

If you want to use custom ranking values for your own indexers, you will have to fill the column "customranking" of the table "tx_kesearch_index" with the desired value. You can use the hooks ke_search provides. Please have a look at the Custom ranking hook class at

Classes/Hooks/CustomRanking.php
Copied!

Autocomplete 

The autocomplete feature proposes search words as the user begins to type.

The phrases proposed in the autocomplete feature are taken from real search words other users used. Only phrases which gave results in the past are proposed. The words are taken from the search word statistics table.

To activate this feature, you have to mark the checkbox "use statistics" on the first tab of the ke_search plugin (activated by default). With each search, the statistics table will grow and more results will appear in the autocomplete function.

Since version 5.0.6, the autocomplete feature takes the language into consideration. If you have a multi-language site and the search words are different in each language, the autocomplete feature will only propose words from the language of the current page.

For all versions greater than 3.0.0, ke_search_premium does not use jQuery anymore to implement the autocomplete feature but implements it in "vanilla javascript".

Content Security Policy (CSP) 

Since version 7.0.0, the autocomplete feature is compatible with TYPO3's Content Security Policy (CSP). The logic is stored in an external JavaScript file, and configuration data is passed to the search input elements via data attributes. If your TYPO3 setup uses CSP nonces, these will be automatically applied to the configuration script.

Configuration 

You can enable/disable the autocomplete feature in the settings module in the extension configuration.

Activate the autocomplete feature

After enabling the checkbox for autocomplete and a "clear cache", the needed TypoScript files will be included automatically; there's no need to add a template manually.

Adding your own autocomplete words 

If you want to add your own words to the list of proposed words, please have a look at:

Classes/Middleware/Autocomplete.php
Copied!

There's a hook to include your code (search for "modifyAutocompleWordList").

Configuration options 

These are the configuration options for plugin.tx_kesearchpremium_pi1:

Value Type Description Default
amount Integer If autocomplete finds a mass of records, it's better to reduce the results in the select box to a lower number. In normal cases, 10 results should be enough, but you can change this value here. 10

Note on JavaScript and CSS files 

After activating this feature in the extension configuration, two static TypoScript files will be included automatically:

EXT:ke_search_premium/Configuration/TypoScript/Autocomplete/constants.typoscript
EXT:ke_search_premium/Configuration/TypoScript/Autocomplete/setup.typoscript
Copied!

In the setup.typoscript file, one CSS and several external JavaScript files are included:

  • EXT:ke_search_premium/Resources/Public/Css/auto-complete.css: CSS for styling the suggestions.
  • EXT:ke_search_premium/Resources/Public/Javascript/auto-complete.min.js: The autocomplete library.
  • EXT:ke_search_premium/Resources/Public/Javascript/ke_search_premium_autocomplete.js: The initialization logic for autocomplete feature.

If the autocomplete feature does not work as expected, make sure those files don't conflict with your custom CSS and JavaScript.

Did you mean ... ? 

You can activate the feature "Did you mean?" in the extension configuration of ke_search_premium in the "Doyoumean" tab.

When the "Did you mean?"-feature is activated and a search query does not give any results, instead of the "no results" message either the correctly spelled word is displayed or a similar word. After clicking on that word, a new search will be executed.

Did you mean ... ?

This feature uses the open databese of Openthesaurus, talking to it through the Openthesaurus API.

Since Openthesaurus.de is German only, this feature makes only sense on german websites.

Since ke_search_premium version 6 it is possible to disable the feature via TypoScript. You have to first enable the feature in the extension settings and can then disable it via TypoScript e.g. for languages other than german.

ke_search_premium.extconf.override.enableDoYouMean = 0
[siteLanguage("languageId") == 1]
    ke_search_premium.extconf.override.enableDoYouMean = 1
[end]
Copied!

Configuration 

Value Type Description Default
LinkForXml Wrap This is the wrapping link which calls the www.openthesaurus.de API to get the result in XML format http://www.openthesaurus.de/synonyme/search?q=
LinkForJson Wrap This is the wrapping link which calls the www.openthesaurus.de API to get the result in JSON format (BETA). http://www.openthesaurus.de/synonyme/search?q=
ApiFormat Option With help of this selectbox you can decide if the results of OpenThesaurus should be received as XML or JSON. Be careful: JSON is in BETA status. But on our test systems we havn't found any problem. So it's at you to use JSON or not. Xml
MaxDistance Option The lower this setting is as more equal is the new word to the given search word. A distance of 1 will find "auto" for "autho" but not "paaren" for "parken". In this case you have to set max distance to 2. It seems that the max distance of OpenThesaurus API is 3. So it can be that we will reduce the distance selectbox to 3 in future 2

Distance based search with Google Maps integration 

This feature gives you the possibility to search for hits in a certain radius around a given zip or city. The hits may optionally be presented on a map (using Google Maps), additionally the distance is shown in the result list. If you want to avoid loading third-party content in the browser you can only use the distance search without the map.

Distance based search with Google Maps integration

System requirements 

  • "curl" has to be installed.
  • Activate distance search (see chapter "How to activate the distance search")
  • This feature does not work together with the boost keywords feature.
  • Since distance calculation is done within MySQL, it is not possible to use "Sphinx" at the same time.

Configuration 

The distance search configuration can be adjusted using this TypoScript (see Configuration/TypoScript/Distancesearch/setup.typoscript):

plugin.tx_kesearchpremium {
    distancesearch {
        templatepath = EXT:ke_search_premium/Resources/Private/Templates/DistanceSearch/
        radiusoptions = 10,20,50,100,200
        radiuslabel = km
    }
}
page.includeCSS.keSearchPremiumGoogleMapsCss = EXT:ke_search_premium/Resources/Public/Css/google-maps.css
Copied!

Geocode own content 

In order to geocode your own content you will have to create a hook in your own extension and do the geocoding.

Please have a look at the hook modifyAddressIndexEntry (ke_search_premium/Classes/DistanceSearch/DistanceSearch.php) delivered with ke_search_premium.

Troubleshooting 

If geocoding or distance search does not work, please check the following:

  • Check if the Geocoding API key (googleapikeyserver) is correct.
  • Check if the browser key (googleapikeybrowser) is correct.
  • Check if a valid Google Map ID (googlemapsmapid) is configured when the map is enabled.
  • Check if the country is set in the extension configuration.
  • Check the ke_search log file for errors. If Google Maps returns an error, this will be logged.
Show addtional fields

Remote indexer 

Using the remote indexer you can transfer search results from one TYPO3 instance to another. In the main instance you can then search both, the main and the remote index using the same search form.

Configuration steps 

  • Install ke_search_premium in the main and in the remote TYPO3 instance.
  • Activate the "API" function in the extension manager.
  • On the remote website: Set username and password in the "API" tab.
  • On the main website: Add an indexer configuration. Configure the domain, login data and page uid on which the search index is saved in the remote instance.
  • Starting the indexer will now transfer the data from remote to the main instance where it can be searched.
  • You can set a tag in order to use facetting for the transfered data.

Activate API function 

Activate API function

Add an indexer configuration 

Add an indexer configuration Configure the indexer configuration

Sphinx 

The support of Sphinx for the MySQL fulltext search can speed up ke_search queries. This is useful particularly for large search indexes.

The performance depends on the server that is hosting ke_search. On some machines Sphinx can be useful with 1.000 index entries. On other hardware the performance is possibly still quite good using the standard MySQL index with 10.000 index entries.

An additional benefit is the ability to make use of the "in-word-search" capabilities of sphinx (see below). But this feature can also be used without Sphinx, see In-Word-Search.

Restrictions 

There are some restrictions to take into account if you want to use the Sphinx feature:

Synonyms 

With this feature, you can add synonyms for search phrases. When a user then searches for a something, the search query is extended by the synonyms.

These synonyms have to be added by an editor, there are no predefined synonyms.

In a "Synonym" table you can add a search phrase and the corresponding synonyms.

Example: If someone searches for "laptop" you can create a new synonym record to search also for "notebook".

The search will be executed in an OR combination. You can add more than one synonym for a given search phrase.

The synonym feature will not work together with the Sphinx feature.

Activate the synonym feature 

Please activate this feature in extension configuration first.

Activate the synonym feature

Add synonyms 

In order to add synonyms, please use the "List" module, and add "Synonym" record in your search storage page (where your indexer configuration is stored).

Create a new synonym

You have to enter each synonym in one line (divided by a line break).

Searchphrase and synonyms

Headless 

The "headless" feature allows you to receive the output of ke_search in JSON format to process is in a headless application.

In the extension manager you can specify the UIDs of the ke_search content elements and the IP addresses which should be allowed to access the headless function.

Use case examples 

  • Render search results with AJAX.
  • Create a headless application and use ke_search in the backend.

Configuration 

Please install and configure ke_search, the indexers and the plugins as if you would use ke_search in non-headless context (see "Quickstart" in the ke_search documentation).

You can then use the extension settings module, open the "Headless" tab in the ke_search_premium settings and specify the UIDs of the ke_search plugins you want to make available for headless response.

Headless configuration in extension settings

After that you need to include the static template "Faceted Search Premium - Headless" in your main template.

Including the headless static template

Alternatively, if you are using site sets, you can add the site set "Faceted Search Headless".

Adding the headless site set

A new plugin will appear and you need to switch both search plugins (searchbox and result list) to their "cachable" versions.

Switching to cachable results plugin

Please also specify the IP address(es) from which access to the headless function should be allowed. Although it is possible to use "*" to make the headless function publicly available, it is recommended to limit the access to only the IP address of your application, because the response will include full database rows e. g. from the pages table (in the "orig_row" property) which may disclose information you want to keep private.

You will also need to specify the fields which should be exposed to the public by defining a whitelist. This is a semicolon-separated list of fields which should be included in the response. Fields in a multidimensional array must be combined with a dash, the sub-fields must then be added with a colon and separated with a colon.

Example for the fields whitelist:

page;searchword;searchwordDefault;sortByField;sortByDir;filters;filters:title,name,id,checkboxOptions;filters-checkboxOptions:title,tag,slug,key,id
Copied!

Step-by-step guide 

  • Install and configure ke_search, the indexers and the plugins as if you would use ke_search in non-headless context.
  • Open the extension settings module and go to the "Headless" tab.
  • Specify the UIDs of the ke_search plugins you want to make available for headless response.
  • Specify the IP addresses which should be allowed to access the headless function.
  • Specify the fields which should be exposed to the public by defining a whitelist.
  • Clear the cache
  • Add the static template "Faceted Search Premium - Headless" to your main template. This static template will only appear after you have set the UIDs of the content elements in the extension settings. Important: Make sure you put the static template on the root page of your installation, even if you use the headless feature only on a subpage because the headless function is accessed via a middleware and the configuration will only take effect if you put it on the root page. Alternatively, if you are using site sets, you add the site set "Faceted Search Headless".
  • Switch the search box plugin from "Faceted search - Searchbox and Filters" to "Faceted search - Cachable Searchbox and Filters".
  • Switch the result list plugin from "Faceted search - Results" to "Faceted search - Cachable Results" (this plugin will only appear after you have et the UIDs of the content elements in the extension settings).

Overwriting the headless response 

There is also a hook which you can use to overwrite the configuration for the headless response. The hook is called "modifyHeadlessConfiguration". See Class

Classes/Middleware/HeadlessApiMiddleware.php

Copied!

Usage 

You can access the headless function by adding the parameter "tx_kesearch_pi1[headless_ce]" to specify the content element from which you want to receive the JSON response. The other parameters are the same as you would access ke_search in non-headless mode. Please add the "no_cache" parameter.

Examples 

For the following examples we assume that the content element with the UID 308 is our search box plugin and the UID 309 is our search result plugin.

Default result list 

Calling the result list plugin without any further parameters will give you the first 10 results (if not configured otherwise in the plugin settings).

https://my.example.org/?tx_kesearch_pi1[headless_ce]=309&no_cache=1

Copied!
JSON response for result list

Search plugin (including filters) 

Calling the search box plugin will give you the search configuration including the filters.

https://my.example.org/?tx_kesearch_pi1[headless_ce]=308&no_cache=1

Copied!
JSON response for search box and filters

Searching for a search phrase 

https://my.example.org/?tx_kesearch_pi1[headless_ce]=309&tx_kesearch_pi1[sword]=my%20search%20phrase&no_cache=1
Copied!

Filtering 

You can use the identfiers and values of the filters you get from calling the search box plugin to compile a search request which includes filtering.

Filtering using a dropdown filter:

https://my.example.org/?tx_kesearch_pi1[headless_ce]=309&tx_kesearch_pi1[filter_11]=syscat84&no_cache=1
Copied!

Filtering using a checkbox (multiselect) filter:

https://my.example.org/?tx_kesearch_pi1[headless_ce]=309&tx_kesearch_pi1[filter_3_273]=fruits&tx_kesearch_pi1[filter_3_302]=syscat94&no_cache=1
Copied!

More parameters 

You can use all the parameters ke_search supports in the non-headless mode (like sorting, pagebrowser settings etc.):

  • sword
  • filter
  • page
  • sortByField
  • sortByDir

Upgrading from ke_search_premium 5 to 6 

If you have previously used the headless feature in ke_search_premium 5, you will need to update the "Type" of result list content element from "Insert Plugin" to "Faceted search - Cachable Results".

Changelog 

Version 7.0.0 (18 June 2026) 

  • [!!!] This version works with TYPO3 14 and 13 and drops support for TYPO3 12.
  • [FEATURE] Improve autocomplete feature by adding compatibility with TYPO3's Content Security Policy (CSP).
  • [TASK] Make Distance Search and Google Maps rendering compatible with TYPO3 CSP by adding nonce-aware inline assets and dedicated CSP directives.
  • [TASK] Bump TYPO3 and ke_search version requirements to support newer versions.
  • [TASK] Remove TYPO3 12-specific hook for query modification.
  • [TASK] Update composer dependencies to align with TYPO3 13 and 14 compatibility.
  • [TASK] Add unit tests for Autocomplete feature
  • [TASK] Migrate Google Maps marker rendering from deprecated google.maps.Marker to google.maps.marker.AdvancedMarkerElement and add extension setting googlemapsmapid (fallback: DEMO_MAP_ID).
  • [TASK] Refactor autocomplete configuration handling
  • [TASK] Refactor NoResultsHandler
  • [TASK] Add extension title to localization file (for usage in the new record wizard)
  • [TASK] Add extension title in composer.json description (for usage in the extension manager)
  • [TASK] Migrate remote indexer: Refactor FetchIndexEntries and Api middleware
  • [TASK] Refactor modifyFieldValuesBeforeStoring to simplify checks and improve null handling
  • [TASK] Integrate request handling in Headless API and DistanceSearch classes
  • [TASK] Add site set for Headless API
  • [BUGFIX] Adjust return property type in class KeSearchPremium (Sphinx API) to allow false to allow logging of errors
  • [DOCS] Add alternative text for images in feature documentation to improve accessibility

Version 6.0.3 (11 November 2025) 

  • [BUGFIX] Correct handling of synonyms in ModifySearchWords class to avoid problems with "explicit and" setting

Version 6.0.2 (26 August 2025) 

  • [BUGFIX] Show missing FlexForm in cached result list plugin
  • [BUGFIX] Fix potential null return in preg_replace usage
  • [BUGFIX] Fix dependency range for ke_search

Version 6.0.1 (4 April 2025) 

  • [BUGFIX] Fix bug with boost keywords in ke_search 6.2.0 and above

Version 6.0.0 (20 December 2024) 

  • [!!!] This version works with TYPO3 13 and 12 and drops support for TYPO3 11.
  • [TASK] Update requirements, require TYPO3 12 or 13, drop TYPO3 11
  • [TASK] Make DistanceSearch feature compatible with TYPO3 13
  • [TASK] Add type declarations in NoResultsHandler
  • [TASK] Make "Did you mean" feature compatible with TYPO3 13
  • [TASK] Make it possible to disable "Did you mean" via TypoScript
  • [DOCS] Update documentation on "Did you mean" feature
  • [TASK] Make Sphinx you mean" feature compatible with TYPO3 13
  • [BUGFIX] Fix index so that sphinxLimit setting is visible in the extension manager
  • [DOCS] Update documentation on Sphinx feature
  • [TASK] Make Autocomplete feature compatible with TYPO3 13
  • [DOCS] Update documentation on Autocomplete feature
  • [TASK] Make Synonym feature compatible with TYPO3 13
  • [DOCS] Update documentation on Synonym feature
  • [TASK] Make Remote Indexer feature compatible with TYPO3 13
  • [DOCS] Update documentation on Remote Indexer feature
  • [TASK] Make Custom Ranking feature compatible with TYPO3 13
  • [DOCS] Update documentation on Custom Ranking feature
  • [TASK] Make Boost Keywords feature compatible with TYPO3 13
  • [DOCS] Update documentation on Boost Keywords feature
  • [TASK] Make Headless feature compatible with TYPO3 13
  • [DOCS] Update documentation on Headless feature
  • [TASK] Make In-Word-Search feature compatible with TYPO3 13
  • [DOCS] Update documentation on In-Word-Search feature

Version 5.0.7 (23 August 2024) 

  • [TASK] Clean up autocomplete result

Version 5.0.6 (16 August 2024) 

  • [TASK] Make synonyms feature compatible with InnoDB
  • [TASK] Remove dependency to TpwdKeSearchLibDb in Autocomplete.php
  • [TASK] Respect language in autocomplete function. Note: The signature for the hook function "modifyAutocompleWordList" has changed. Please update your hook function accordingly if you create your own autocomplete words.

Version 5.0.5 (19 April 2024) 

  • [BUGFIX] Avoid undefined array key warning for keywords. If a page has no translation and "CustomRanking" is activated an "undefined array key" error appeared. Thanks to Remo Häusler.

Version 5.0.4 (February 2024) 

  • [BUGFIX] Avoid undefined array key warning for keywords
  • [TASK] Remove obsolete "showRecordFieldList" property from TCA definition for table tx_kesearchpremium_synonym
  • [BUGFIX] Remove type declaration for $pObj variables to make synonyms and "Did you mean" work again with ke_search 5.2.1. (In ke_search 5.2.1 the type of the "PluginBase" object has changed.)

Version 5.0.3 (November 2023) 

  • [DOCS] Add note about using the fluid_styled_content for the headless feature
  • [BUGFIX] Avoid array key not sent warning in HeadlessApiMiddleware

Version 5.0.2 (September 2023) 

  • [TASK] Exclude ke_search_premium headless parameter from cacheHash calculation to avoid 404 error
  • [DOCS] Add note about using the "cachable" searchbox plugin for headless

Version 5.0.1 (September 2023) 

  • [BUGFIX] Fix extension setting for "Did you mean"

Version 5.0.0 (July 2023) 

  • [!!!] This version works with TYPO3 12 and 11 and drops support for TYPO3 10.
  • [!!!] The way how to set up the headless feature has changed for TYPO3 12. Please refer to the documentation.
  • [TASK] Update requirements, require TYPO3 11 or 12, drop TYPO3 10
  • [TASK] Update SphinxClient to avoid PHP warnings
  • [TASK] Fix errors reported by PHPStan
  • [TASK] Add type declarations
  • [TASK] Migrate query builder function calls
  • [TASK] Migrate constant TYPO3_MODE to TYPO3
  • [TASK] Use LLL:EXT: syntax for language file reference
  • [TASK] Add more information about failed geolocation to the log
  • [TASK] Only store successful geolocation data in the cache
  • [TASK] Update documentation
  • [TASK] Migrate path configuration for autocomplete files to EXT: syntax to work with TYPO3 12
  • [TASK] Make FetchIndexEntries function static to work with TYPO3 12
  • [TASK] Use site router to build links instead of content object renderer
  • [TASK] Migrate usage of GeneralUtility::_GP() and use ServerRequest instead
  • [TASK] Use or instead of orX in queryBuilder
  • [TASK] Remove obsolete second parameter from findWordsWhichBeginsWith()
  • [TASK] Make headless feature work with TYPO3 12

Version 4.2.3 (March 2023) 

  • [TASK] Add phpstan and php-cs-fixer
  • [TASK] Fix code style issues found by php-cs-fixer
  • [TASK] Fix issues reported by PHPStan
  • [BUGFIX] Fix undefined array key issues in Autocomplete.php

Version 4.2.2 (December 2022) 

  • [TASK] Treat synonyms as phrases, keep the original search string when synonyms are used and highlight synonyms in search result list

Version 4.2.1 (September 2022) 

  • [BUGFIX] Fix error logging when geocoding failed
  • [BUGFIX] Show sorting "Distance" when distance search is activated (fix deprecation)

Version 4.2.0 (September 2022) 

  • [FEATURE] Partial word search (find searchstrings inside words) without the need of using Sphinx
  • [BUGFIX] Fix PHP8 issues
  • [TASK] Add Services.yaml and use correct file name for SphinxApi class
  • [TASK] Refactor BoostKeywords to use new event "MatchColumnsEvent"
  • [TASK] Raise ke_search dependency to 4.5.0

Version 4.1.0 (December 2021) 

  • [!!!] This version works with TYPO3 10 and 11 and drops support for TYPO3 9.
  • [TASK] Mark as compatible to TYPO3 11.5
  • [TASK] Move language files from xml to xlf
  • [TASK] Move TypoScript configuration files to Configuration/TypoScript and rename the ending from txt to typoscript
  • [TASK] Make Autocomplete function compatible to TYPO3 11
  • [TASK] Optimize Autocomplete function in order to make it work with multiple search forms on the page
  • [TASK] Do not use underscore for filter names in distance search filter. Underscores must not be used for filter names (due to the fact that the routing features uses underscores to flatten filter arrays).
  • [TASK] Initialize customranking value only if it not has been set before

Version 4.0.1 (October 2021) 

  • [BUGFIX] Security Fix. Please update!

Version 4.0.0 (October 2021) 

  • [TASK] Use namespace "tpwd" for ke_search_premium classes
  • [TASK] Use new namespace "tpwd" for ke_search classes (has changed in ke_search 4.0.0)
  • [TASK] Require twpd/ke_search
  • [TASK] Require ke_search version 4.0.1
  • [TASK] Log sphinx errors to ke_search logfile
  • [TASK] Change eID class signature in order to adapt remote indexer feature to TYPO3 10
  • [TASK] Include fields for the result list in the default fields for the headless response

Version 3.4.2 (September 2021) 

  • [BUGFIX] Security Fix. Please update!

Version 3.4.1 (July 2021) 

  • [TASK] Add whitelist for headless response fields
  • [TASK] Add hook for headless configuration

Version 3.4.0 (June 2021) 

  • [FEATURE] Add headless (JSON) response via MiddleWare
  • [TASK] Add extension key to composer.json
  • [TASK] Rearrange the settings in the extension manager (move settings from the basic tab to the tab they belong to)
  • [TASK] Raise ke_search requirement to 3.8.1

Version 3.3.0 (January 2021) 

[!!!] This version changes the database structure!

  • [TASK] Add ke_search 3.1.5 requirement
  • [TASK] Synonyms: Use words as synonyms only if the full word matches exactly (no part word matches)
  • [BUGFIX] Fix TYPO3 requirement (works with 9, not only 10) in ext_emconf.php to match composer.json

Version 3.2.0 (July 2020) 

  • [BREAKING] Note: This version changes the database structure.
  • [FEATURE] Add feature "Keyword Boost"
  • [FEATURE] Add feature "Custom Ranking Boost"

Version 3.1.1 (January 2020) 

  • [TASK] Set compatibility to TYPO3 10.4

Version 3.1.0 (January 2020) 

This version works with TYPO3 9.5 and 10.2.

  • [TASK] Make distance search work with TYPO3 10.2, move TCA configuration to Configuration/TCA/Overrides, include static template automatically in ext_tables.conf (no need to add static template manually anymore), remove ext_tables.php.
  • [TASK] Make autocomplete feature work with TYPO3 10.2
  • [TASK] use ExtensionConfiguration API in ext_localconf.php.
  • [TASK] remove "use" statement in ext_localconf.php.
  • [TASK] use ExtensionConfiguration API in ext_tables.php.
  • [TASK] remove "use" statement in ext_tables.php.
  • [BUGFIX] Fix check for valid URL in remote indexer.
  • [TASK] Do not use jQuery for the autocomplete feature but use plain javascript instead.
  • [BUGFIX] remove wrong use statement in ModifySearchWords.php
  • [TASK] Fix deprecation, replace getUserObj with makeInstance.

Version 3.0.0 (January 2019) 

This version works with TYPO3 9.5.

  • [FEATURE] Make ke_search_premium compatible with TYPO3 9.5 and ke_search version 3.0.0
  • [TASK] Use namespaced classes
  • [TASK] move TCA to Configuration/TCA
  • [TASK] use doctrine / query builder for database queries
  • [TASK] remove ext_autoload.php
  • [TASK] Move autocomplete javascript to the footer
  • [BUGFIX] Fix including of TypoScript code for autocomplete feature

Version 2.1.0 (January 2018) 

  • [FEATURE] Add configuration option for Google API (you'll need two keys, one for maps and one for geocoding).
  • [FEATURE] Use SSL for Google API access.
  • [FEATURE] Make ke_search_premium compatible with TYPO3 8.7 and ke_search Version 2.6.2.
  • [BUGFIX] Fix bug "No columns definition in TCA table" in TYPO3 8.7

Version 2.0.0 (May 2016) 

  • [FEATURE] Make ke_search_premium compatible with TYPO3 7.6 and ke_search Version 2.2.1.

Version 1.2.2 

  • bugfix release

Version 1.2.1, February 2015 

  • bugfix: fix typo
  • bugfix: fix function header for google maps integration

Version 1.2.0, January 2015 

  • feature: Add remote indexer. This new indexer allows to import search results from a different TYPO3 website. This feature makes it possible to search two or more TYPO3 websites using one search form. On the remote TYPO3 website ke_search and ke_search_premium have to be installed and configured.
  • task: add image for remote indexer
  • task: add note how to activate "in word search" in extension manager.

Version 1.1.2 

  • feature: improve performance for large result sets by reducing the sorting to the first 1000 elements. After that, results will be unsorted.
  • feature: improve autosuggest feature customization possibilites (new hook, pid checking).
  • workaround for large result sets (> 50.000), TODO: optimize query so that this large amount of memory is not needed

Version 1.1.1, September 2014 

  • Sphinx search bugfixing: Show correct number of results in filter options.
  • feature: allow sphinx server name and port configuration in extension manager.
  • feature: send email to administrator if sphinx reports an error.

Version 1.1.0, July 2014 

  • Distance search and Google maps integration

Version 1.0.X 

  • Sphinx support
  • Autocomplete
  • Did you mean?
  • Synonyms