使用Solrnet制作Solrnet Facet Linkeble?

时间:2013-09-25 07:10:44

标签: asp.net-mvc-4 solr solrnet

我正在构建一个MVC4应用程序来对wiki文档进行搜索。一切都很好,但我还没有找到最好的方法使facet可链接。

我会在我的首页上使用这些方面,以便更容易找到您要查找的关键字:

             var products = solr.Query(SolrQuery.All,
                                  new QueryOptions {
                                      Rows = 0,
                                      Facet = new FacetParameters {
                                          Queries = new[] { new SolrFacetFieldQuery("products") }
                                      }
                                  });
        foreach(var facet in products.FacetFields["products"]) {
            var catagoryFacet = new CategoryFacet(facet.Key, facet.Value);
            facetProductList.Add(catagoryFacet);
        }

然后我循环浏览视图中的列表:

<h2> Products: </h2>

@foreach (var facet in Model)
{
    foreach(var item in facet.products) {    
        <td><a href="http://localhost:5000/Home/FreeSearch?search=@Html.DisplayFor(ModelItem => item.Name)">@Html.DisplayFor(ModelItem => item.Name), @Html.DisplayFor(ModelItem => item.Count)</a></td> <br/>
    }   

但是使用这种方法,当用户点击链接时,发生的事情是我将facet的单词发送回控制器,因为我知道它存在,所以搜索该关键字。

我知道这是一种不好的方式,所以我想找到一个更好的方法,因为我来自瑞典,如果我使用任何“åäö”,链接就会被打破。有可能通过javascript处理,但感觉非常难看,所以我怎么能以更好的方式做到这一点?

我一直在查看过滤器查询,但如何使其可链接?

此致 乔纳森

1 个答案:

答案 0 :(得分:0)

我通过简单地将Url.Encode放在Item.Name上来解决它。现在搜索工作正如我所希望的那样。

<h2> Products: </h2>

@foreach (var facet in Model)
{
    foreach(var item in facet.ProductFacets) {    
        <td><a href="http://localhost:5000/Home/FreeSearch?search=@Url.Encode(item.Name)">@Html.DisplayFor(ModelItem => item.Name), @Html.DisplayFor(ModelItem => item.Occurrences)</a></td> <br/>
    }