好吧,我在這裏的一個樹樁上。即使代碼拼錯,也要搜索產品
基本上我遇到的問題是,當人們在尋找某些東西時,他們會誤以爲很多時候涉及多個0的代碼,例如當搜索時:K00000WEFLZ
他們誤認爲0,然後產品結果沒有任何東西返回,我基本上是想試一試,以便搜索檢查在字母「K」之後搜索是否包含一定數量的0(因爲K總是會有10+的ID號碼, 5 0),如果它在搜索操作中用「*」代替它,仍然可以讓你找到產品,無論他們輸入問題多麼錯誤。
我知道我將不得不做一個自定義的類,並覆蓋默認的這個(但很多這是不能訪問/是私人)作爲默認的搜索模式不能改變,因爲這會改變它爲每個人,我只希望它爲這個特定的網站。
我也不能在開頭或結尾使用通配符,因爲它會爲許多結果匹配英里,因爲它有一個巨大的目錄。
據我知道這是處理與類默認邏輯搜索代碼:
protected virtual IList<Product> CreateCustomCollection()
{
var list = new List<Product>();
switch (mode)
{
case ProductRepeaterMode.Search:
if (Page.Request.QueryString["search"] != null && Page.Request.QueryString["search"].Length != 0)
{
bool[] customString = new bool[5] { SearchCustomString1, SearchCustomString2, SearchCustomString3, SearchCustomString4, SearchCustomString5 };
IList<Product> results = Fabric.ObjectProvider.Get<IProductSearchCommand>().Search(Page.Request.QueryString["search"], out searchWords, IncludeSkus, IsPublicFacing, customString, CoreHttpModule.Session);
var retailOrder = WebStoreManager.CurrentOrder as IRetailOrder;
var accountOrder = WebStoreManager.CurrentOrder as IAccountOrder;
IList<Product> productsToRemove = new List<Product>();
IList<Product> productsToAdd = new List<Product>();
foreach (var product in results)
{
if (hideRestrictedProducts)
{
if (retailOrder != null)
{
if (!product.CanBePurchasedByRetailCustomer || product.AgentOnly)
productsToRemove.Add(product);
}
else
{
if (accountOrder != null)
{
var add = false;
if (product.CanBePurchasedOnAccount)
add = true;
if (product.AgentOnly)
{
if (accountOrder.Agent != null)
add = true;
else
add = false;
}
if (!add)
productsToRemove.Add(product);
}
}
}
// Replace SKUs with lines
if (resolveSkusToLines)
{
var sku = product.Role as SkuProductRole;
if (sku != null)
{
productsToRemove.Add(product);
if (sku.Owner != null && sku.Owner.Product != null)
{
var line = sku.Owner.Product;
if (!results.Contains(line) && !productsToAdd.Contains(line))
productsToAdd.Add(line);
}
}
}
}
foreach (Product product in productsToAdd)
{
results.Add(product);
}
foreach (Product product in productsToRemove)
{
results.Remove(product);
}
foreach (var result in results)
list.Add(result);
}
break;
}
return list;
}
我正在考慮可能分手的搜索字符串轉換成字符數組,然後檢查最相似的字符串的字符數組的數據庫,但是我覺得這種做法是非常低效的 –
我還可以使它這樣如果有說... 2+ 0的我把它們全部換成通配符。 –
我正在研究使用正則表達式來檢測並替換它 –