/// <summary> /// 过滤条件 /// </summary> /// <param name="documentIds"></param> /// <param name="storeIndex"></param> /// <param name="result"></param> /// <param name="searchQuery"></param> protected virtual void FilterDocuments(IList <long> documentIds, StoreIndexInfo storeIndex, SearchResultInfo result, SearchQueryInfo searchQuery) { foreach (var documentId in documentIds) { var document = Documentor.GetInfo(storeIndex, documentId); if (document == null || document.Feilds == null) { continue; } if (searchQuery.Conditions.ContainsKey("IsCustom") && document.Feilds.Count > 6 && !document.Feilds[6].Text.Convert <bool>() != searchQuery.Conditions["IsCustom"].Convert <bool>()) { continue; } if (searchQuery.Conditions.ContainsKey("StartCost") && document.Feilds.Count > 4 && document.Feilds[4].Text.Convert <decimal>() < searchQuery.Conditions["StartCost"].Convert <decimal>()) { continue; } if (searchQuery.Conditions.ContainsKey("EndCost") && document.Feilds.Count > 4 && document.Feilds[4].Text.Convert <decimal>() > searchQuery.Conditions["EndCost"].Convert <decimal>()) { continue; } if (searchQuery.Conditions.ContainsKey("StartPrice") && document.Feilds.Count > 5 && document.Feilds[5].Text.Convert <decimal>() < searchQuery.Conditions["StartPrice"].Convert <decimal>()) { continue; } if (searchQuery.Conditions.ContainsKey("EndPrice") && document.Feilds.Count > 5 && document.Feilds[5].Text.Convert <decimal>() > searchQuery.Conditions["EndPrice"].Convert <decimal>()) { continue; } if (searchQuery.Conditions.ContainsKey("Sku") && document.Feilds.Count > 3 && !string.IsNullOrEmpty(document.Feilds[3].Text)) { var texts = searchQuery.Conditions["Sku"].ToString().Split(','); var values = document.Feilds[3].Text.Split(','); var rev = texts.All(text => CheckValue(values, text)); if (rev) { continue; } } result.Documents.Add(document); } }
/// <summary> /// 添加行 /// </summary> /// <param name="storeIndex"></param> /// <param name="searchQuery"></param> /// <param name="result"></param> /// <param name="documentIds"></param> protected virtual void AddSearchDocuments(StoreIndexInfo storeIndex, SearchQueryInfo searchQuery, SearchResultInfo result, IList <long> documentIds) { if (searchQuery.PageSize > 0) { documentIds = documentIds.Skip(searchQuery.PageIndex * searchQuery.PageSize).Take(searchQuery.PageSize).ToList(); } foreach (var documentId in documentIds) { var document = Documentor.GetInfo(storeIndex, documentId); if (document != null) { result.Documents.Add(document); } } }