Stemming is the process of reducing a word to its root form. This is commonly done when indexing and searching freeform text content to increase the chance of matching a document containing a word form that varies in tense or cardinality from the user's search terms.
Cardinality is an approachable way to think about this complex problem. If a user searches Toolhub for the plural English noun `templates` they are probably equally happy to find results where the toolinfo author used the singular English noun `template`. A savvy user can use wildcards to work around a lack of cardinality stemming in some languages (like English) by searching for `template*`. This type of workaround is limited however to suffix-based variations.
Elasticsearch uses [[https://www.elastic.co/guide/en/elasticsearch/reference/6.8/analysis-tokenfilters.html|token filters]] to implement stemming support. Fully supporting all languages is a never ending task, but we should be able to support a number of commonly used languages without investing hundreds of human hours in implementation and configuration by using [[https://www.elastic.co/blog/how-to-search-ch-jp-kr-part-2|multi-fields with language-specific analyzers]]. For the initial implementation, supporting English stemming would be sufficient. We do not have a localization process for toolinfo records yet, and as a result most content is only available in English.