所以我在 Azure 搜索周围使用 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 时。
基本上,一个帐户可以有不同的客户 skus,但它只与该帐户相关联 - 我不希望每个帐户都有单独的索引。
所以我的电话会像 /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);
其中 term 是正常的搜索词,尝试添加 AccountId 但它不起作用。