Я пытаюсь реализовать эту факсированную логику поиска: http://ravendb.net/docs/2.0/client-api/faceted-search. Но хиты каждого ценового диапазона, которые возвращаются из базы данных, не работают должным образом; все хиты сгруппированы по последнему ценовому диапазону.RavenDB Граничный поиск: Я получаю неправильные образы для диапазонов цен
документ Мой продукт выглядит следующим образом:
{
"Sku": "000000000000069673",
"Title": "APPLE ME186",
"Brand": "APPLE",
"RegularPrice": 84.99,
"ReferencePrice": 0.0,
"YouSavePrice": 0.0,
"ShortDescription": "",
"Description": "",
"CategoryHierarchyPath": "Beeld en geluid/Hoofdtelefoons/In-ear koptelefoon",
"Categories": [
"0/Beeld en geluid",
"1/Beeld en geluid/Hoofdtelefoons",
"2/Beeld en geluid/Hoofdtelefoons/In-ear koptelefoon"
],
"Stocks": [
{
"Quantity": ,
"Branch": ""
}
],
"Images": [],
"Attributes": [
{
"Name": "",
"Value": ""
}
]
}
Индекс Я запрашивая против:
public class CategoryProducts : AbstractIndexCreationTask<Product, CategoryProducts.ReduceResult>
{
public class ReduceResult
{
public string Category { get; set; }
public string Title { get; set; }
public decimal RegularPrice { get; set; }
public string ShortDescription { get; set; }
public int Description { get; set; }
}
public CategoryProducts()
{
Map = products =>
from p in products
from c in p.Categories
select new
{
Category = c,
Title = p.Title,
RegularPrice = p.RegularPrice,
ShortDescription = p.ShortDescription,
Description = p.Description
};
}
}
The FacetSetup:
Facets = new List<Facet>
{
new Facet
{
Name = "RegularPrice",
Mode = FacetMode.Ranges,
Ranges =
{
"[NULL TO Dx200.0]",
"[Dx200.0 TO Dx400.0]",
"[Dx400.0 TO Dx600.0]",
"[Dx600.0 TO Dx800.0]",
"[Dx800.0 TO NULL]",
}
}
}
Запросов:
var priceRangeFacets = Session.Query<CategoryProducts.ReduceResult, CategoryProducts>()
.Where(r => r.Category.StartsWith("1/Beeld en geluid/Hoofdtelefoons")).ToFacets("facets/PriceRanges")
Результат:
[0] = {Range: [NULL TO Dx200.0], Hits: 0}
[1] = {Range: [Dx200.0 TO Dx400.0], Hits: 0}
[2] = {Range: [Dx400.0 TO Dx600.0], Hits: 0}
[3] = {Range: [Dx600.0 TO Dx800.0], Hits: 0}
[4] = {Range: [Dx800.0 TO NULL], Hits: 77}
Обратите внимание, что у меня есть продукты в базе данных, которые дешевле, чем 800.
P.S. Я использую RavenDB-BUILD-2330
Пожалуйста, создайте неисправного тест и отправить его в список рассылки. –