HotcakesCommerce / hotcakes-commerce-core

The core of the e-commerce part of the overall solution. This is an ecommerce shopping cart solution built on top of the DNN (DotNetNuke) CMS. Anyone can do commerce online now!
https://mmmcommerce.com
MIT License
68 stars 55 forks source link

CI: Autosuggest for Search Input #371

Open WillStrohl opened 2 years ago

WillStrohl commented 2 years ago

Is your feature request related to a problem?

When a visitor is searching for products, it may be difficult to find them on stores with a larger product catalog. An autosuggest feature might improve the user experience for most stores by suggesting products based on the value in the search input.

Describe the solution you'd like

When a visitor types in 3 or more characters, an underlying web service should be called to find products that match the 3 (or more characters) in the search input. The search algorithm should first find all products in the catalog based on a partial matching search. It doesn't need to search by the beginning, but any value in the relevant search/index fields. The suggested products should take into account the underlying metadata that can be gathered from the following and rank the values based on an aggregated popularity rating.

This approach may require that we implement an ongoing index table that regularly updates the product suggest ratio mentioned above to make the results display faster and prevent other potentially related performance issues areas.

The search itself that triggers the autosuggest should only look at the following values:

The autosuggest algorithm should follow a "contains" pattern. Meaning that searching for after might return all of the following products in a catalog (examples using a fictional bookstore book titles):

What's more, a search for aft could potentially return the same results.

Describe alternatives you've considered

None at this time.

Additional context

Such a feature has been requested a handful of times over the years, but the desired implementation is generally specific to the type of store that's been requesting the feature.

When implementing, we may need to consider adding a configuration view in the store administration. Examples of potential configuration settings might include: