RavenDB分面搜索并在mvc3中创建面包屑/过滤网址

时间:2012-01-24 09:30:59

标签: ravendb faceted-search

我正在使用mvc3和RavenDB。我有一个用户可以缩小的过滤器菜单 他们使用分面搜索进行搜索,如下所述: http://ravendb.net/docs/client-api/advanced/faceted-search

我喜欢这种网址格式:/filter/{manufacturer}/{resolution}/{zoom} 例如:/filter/canon/6表示列出制造商正典的所有相机 百万像素6(和所有变焦范围)。

我有这个工作,但我遇到生成URL的麻烦。这只会 如果facet值可以安全地用于URL,则可以工作。替换所有的&符号, 空间等用短划线和小写的一切。这意味着我结束了 在我的filtermenu链接和面包屑中有'丑陋'的名字。

是否可以使用友好名称向用户显示构面值? 所以我可以创建这样的网址:

<a href="/filter/canon/">Canon USA (12)</a>
<a href="/filter/canon/6/">6 megapixels (5)</a>

我能想到的一个解决方案是将过滤器存储为文档 并只搜索一个facet值来检索其displayname。

过滤器文档可能如下所示:

var filter = new Filter
                 {
                   DisplayName = "Manufacturer" ,
                   Slug = "manufacturer" ,
                   Items = new List< FilterItem >
                        {
                            new FilterItem() { DisplayName = "Canon USA" , Slug = "canon" } ,                    
                            new FilterItem() { DisplayName = "Photo's & more" , Slug = "photos-and-more" }
                        }
                 } ;

1 个答案:

答案 0 :(得分:1)

安德鲁, 是的,这可能就是你想要做的。一般来说,既然你控制了价值,就可以控制那些价值,但没有理由在全球范围内努力。您可以将值存储在某处并在它们之间进行映射。 它会更容易。