我有一個製造商的集合,他們每個人都製造幾種產品。製造商可以有字符串標籤,我想通過他們的製造商標籤來搜索產品(例如標籤是由產品從製造商那裏繼承下來的)。搜索「繼承」標籤
這樣做的一種方法是創建一個索引,在TransformResults
部分中,該索引將製造商的標籤添加到每個產品。
from product in results
select new {
...,
Tags = Database.Load("manufacturers/"+ product.ManufacturerId).Tags
}
但我不能似乎能夠查詢它:
this.Query<T>("TaggedProducts").Where(s => s.Tags.Any(tag => tag=="reliable"));
因爲標籤不被索引。我正在使用RavenDB Studio。
這是地圖:
from product in docs.Products
select new {
product.Id,
product.ManufacturerId
}
目前還不清楚我是否需要定義一個字段,我找不到任何文檔解釋。
這些類:
class Manufacturer
{
public int Id {get; set;}
public List<string> Tags {get; set;}
}
class Product
{
public int ManufacturerId {get; set;}
public int Id {get; set;}
}
請注意,我試圖避免添加一個標籤領域的產品類,如果可能的話,因爲這會給的虛假印象的標籤可以在故事設定。
LoadDocument具有與Database.Load類似的功能,但它用於Map階段而不是TransformResults階段。 – Alapago
這是正確的。無論如何,最終的結果是相似的。我不知道他們在索引過程中有什麼影響。 –