2017-11-03 9 views
0

그래서 하늘 검색 주위에 C# nuget 래퍼를 사용하고 있습니다.하늘빛 검색 - 검색어

public class ProductDocument 
{ 
    [System.ComponentModel.DataAnnotations.Key] 
    public string Key { get; set; } 
    [IsSearchable] 
    public string Sku { get; set; } 
    [IsSearchable] 
    public string Name { get; set; } 
    [IsSearchable] 
    public string FullDescription { get; set; } 

    [IsSearchable] 
    public List<CustomerSkuDocument> CustomerSkus { get; set; } 
} 
public class CustomerSkuDocument 
{ 
    [IsSearchable] 
    public int AccountId { get; set; } 
    [IsSearchable] 
    public string Sku { get; set; } 
} 

예 데이터는 다음과 같습니다 :

  new Product() { Key= 100,Name="Nail 101",Sku = "CCCCCCCC", CustomerSkus = new List<ProductCustomerSku>() 
      { 
       new ProductCustomerSku() {AccountId = 222, CustomerSku = "BBBB"}, 
       new ProductCustomerSku() {AccountId = 333, CustomerSku = "EEEEEEE"} 
      } 

그래서 문제가 CustomerSkuDocument 주위에 내 문제는 내가 제품의 인덱스가 있습니다. 검색 할 때 AccountId는 검색 용어와 함께 전달해야하지만 AccountId는 ProductCustomerSkus를 검색 할 때만 사용됩니다.

기본적으로 계정에는 고객 SKU가 다를 수 있지만 해당 계정에만 연결되어 있으므로 계정마다 별도의 색인을 원하지 않습니다.

그래서 내 전화는/AccountId = 222 & term = BBBB와 일치하는 것을 찾을 수 있습니다.

그러나/AccountId = 333 & term = BBBB는 일치하는 항목을 찾지 못합니다.

그래서 나는 그것을 좋아 호출 해요 :

용어는 일반적인 검색어입니다
 SearchParameters sp = new SearchParameters(); 
      sp.SearchMode = SearchMode.Any; 
      sp.QueryType = QueryType.Full; 

      DocumentSearchResult<ProductDocument> results = 
      productIndexClient.Documents.Search<ProductDocument>(term, sp); 

은 계정 아이디를 추가로 그것을 시도했지만 작동하지 않습니다.

답변

0

하늘색 검색은 외부 문서의 속성에 중첩 된 데이터 구조 반복을 지원하지 않습니다. 우리는이 작업을하고 있습니다 (https://feedback.azure.com/forums/263029-azure-search/suggestions/6670910-modelling-complex-types-in-indexes 참조).하지만 우리는 그 작업을 발표하기 전에해야 할 일이 아직 남아 있습니다.

표시 한 예는 아마도 중첩 된 부분의 색인을 생성하지 않습니다. 사용중인 검색 색인 정의를 게시 할 수 있습니까? 복잡한 유형을 직접 지원하는 경우 여기에서 접근 방법을 볼 수 있습니다. https://docs.microsoft.com/en-us/azure/search/search-howto-complex-data-types

위의 내용에서 쿼리 옵션을 안내하는 인덱스 구조를 살펴 보겠습니다. 필요한 것이 모두 평등이면 accountId와 SKU를 동일한 필드에 포함시키고 컬렉션 필드를 사용하여 여러 인스턴스를 가질 수 있습니다. 귀하의 질의에 대해 accountId가 필요한 검색 쿼리를 실행하고 나머지는 선택적 키워드로 사용합니다.