Beispiel #1
0
 /// <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);
     }
 }
Beispiel #2
0
 /// <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);
         }
     }
 }