Shopware Enterprise Search has comprehensive configuration options to configure the search as needed.
The basic settings allow some general configuration of the search:
Synonyms allow you to configure search terms which are considered to be synonym or should match the same result set, e.g. "shoe" and "sneaker". Synonyms are managed in synonym groups, where all search terms in a synonym group are considered synonyms.
Additionally you can limit synonyms to certain shops and add a shopping world to the search result page of search terms belonging to that synonym group. That way you can have your "shoe shopping world" appear on searches for "shoe" as well as "sneaker" and "boot".
Relevance defines the fields ElasticSearch will consider during a search as well as the relevance the have. Additionaly you can modify how ElasticSearch handles those fields.
name.raw. The suffix indicates, how ElasticSearch handles the field:
namemight have some special characters removed,
name.german_analyzerwill apply some optimizations for german language,
name.rawdoes not have any optimizations. In addition to that there are special fields you should consider:
attributes.enterprise.product_suggestionwill split compound words such as "skyscraper" into separate words such as "sky" and "scraper". This is especially useful for language like e.g. german. Also there is
attributes.enterprise.product_suggestion_compoundwhich will search the ngram index and also match "skyscraper" for searches like "ysc". As this might massively lower the quality of the suggestions, we usually recommend to not use this field, if it can be avoided.
Auto: Automatically determine the value depending on the length of the search string. Usually: 0 for 1-2 characters, 1 for 3-5 characters and 2 for anything longer then that.
None: No correction of letters
One: One letter will be corrected
Two: Two letters are corrected
Three: Three letters are corrected
ANDwill only match, if all search terms occur in the field,
ORmatches, once one search term can be found in the field.
ANDis less likely - and therefor usually will get a higher boosting than
OR. E.g. By defining a higher rating for
AND, a customer searching for "sky scraper" will first see "sky scraper" and then "skyway" or "whisky".
Defaultwill apply the default mechanisms of ElasticSearch,
phrasewill force a whole word to match.
Phrase prefixwill allow to match a word, even if just the beginning matches, e.g. "skyscraper" for "sky".
phrase prefix. Defines how many letters may follow after the beginning of the word and still are considered a match. Searching "sky" will only match "skyscraper", if maximum expansion is at least 7 (the number of letters in "scraper").
Generally you will always need multiple relevance definitions for several fields. Think of the relevance definitions as usage scenarios:
field: name, operator: and, relevance: 100
field: name, operator: or, relevance: 90
field: attributes.enterprise.product_suggestion, relevance: 50
field: manufacturer.name, operator: or, relevance: 50, type: phrase_prefix
Usually this is the most relevant part when setting SES for a shop: Usually customers want both: Very precise and good rankings for products matching the term properly as well as fuzzy matches for less relevant searches.
Boost behaves similar to the relevance configuration. They allow to define additional boosts for products which meet certain criteria. This way you can configure, that a product is especially interesting, if it is e.g. a topsellet product.
By default SES will only allow you to choose from boolean product and attributes fields, as these can easily be checked
for their state. In future versions this might be extended to also support arbitrary fields and apply rules on them, such
product.release_date < 2017/02/03. Feel free to give us feedback, if this might be relevant for you.