2013-12-09 1 views
0

umbraco examine에서 검색을 설정하려고합니다. 재료와 제조업체 두 가지 검색 필드가 있습니다. 하나의 재료와 하나의 manufactuere로 검색하려고하면 정확한 결과를 얻을 수 있습니다. 그러나 언제 이상의 자료를 검색하려고 또는 제조사가 result.here를 제공하지 않는 것은 내 코드입니다umbraco의 다중 Searchterm 검색

const string materialSearchFields = "material"; 
    const string manufacturerSearchFields = "manufacturer"; 

경우 (! string.IsNullOrEmpty (Request.QueryString을 [ "자료"])) { 재료 = Helper.StripTags (Request.QueryString [ "material"]); } if (! string.IsNullOrEmpty (Request.QueryString [ "manufacturer"])) { 제조업체 = Helper.StripTags (Request.QueryString [ "manufacturer"])); } 경우 (! string.IsNullOrEmpty (Request.QueryString을 [ "자료"]) ||! string.IsNullOrEmpty (Request.QueryString을 [ "제조업체"])) { VAR 쿼리 = userFieldSearchCriteria.Field (materialSearchFields, 재료) . 및(). 필드 (manufacturerSearchFields, 제조업체) .Compile(); contentResults = contentSearcher.Search (query) .ToList(); 쿼리 문자열 여기 }

내 검색 keywors 우리는이 키워드를 나눌 수 및 수행으로 검색하는 방법 스틸

, 재료 = 철입니까? 도움에 미리 감사드립니다 ....

답변

0

귀하의 경우에는 귀하가 GROUPEDOR를 (를) 찾고 있다고 생각하십니까?

나는 단지 오래된 프로젝트에서 일하고 있었고 거기에서이 스 니펫을 움켜 잡았다. 나는 당신을 도울 것 같아 :이 메서드를 호출 할 때

public IEnumerable<DynamicNode> SearchUmbraco(string[] keywords, string currentCulture) 
     { 
      // In this case I had some diferent cultures, so this sets the BaseSearchProvider to the given culture parameter. You might not need this, use your default one. 
      BaseSearchProvider searcher = SetBaseSearchProvider(currentCulture); 

      var searchCriteria = searcher.CreateSearchCriteria(BooleanOperation.Or); 
      var groupedQuery = searchCriteria.GroupedOr(new[] {"manufacturer", "material"}, keywords).Compile(); 

      var searchResults = searcher.Search(groupedQuery); 

      // ... return IEnumerable of dynamic nodes (in this snipet case) 

     } 

난 그냥 분할 (등)은 도우미의 키워드와 문자열 배열로 전달합니다.

umbraco 블로그에서이 정보를 확인하십시오. http://umbraco.com/follow-us/blog-archive/2011/9/16/examining-examine.aspx