Фасеты SolrNet возвращаются из Solr, но не через клиент SolrNet - PullRequest
0 голосов
/ 04 мая 2018

Я использую этот код для запроса Solr и вижу, что фасеты возвращаются из Solr, но по какой-то причине они не передаются.

public class HomeController : Controller
{
    private readonly ISolrReadOnlyOperations<Product> _solr;

    public HomeController(ISolrReadOnlyOperations<Product> solr)
    {
        _solr = solr;
    }

    public ActionResult Index()
    {
        var queryOptions = new QueryOptions()
        {
            Rows = 5,
            Facet = new FacetParameters
            {
                Queries = new[] { new SolrFacetFieldQuery("brand") }
            }
        };

        SolrQueryByField query = new SolrQueryByField("category", "phones-tablets/mobile-phones");
        SolrQueryResults<Product> results = _solr.Query(query, queryOptions);

        return View();
    }

}

Приведенный выше код генерирует этот URL http://localhost:8983/solr/new_core/select?q=category%3a(phones%5c-tablets%5c%2fmobile%5c-phones)&rows=5&facet=true&facet.field=brand&version=2.2&wt=xml

Когда я вставляю URL, я вижу секцию граней, как и ожидалось. Но results.FacetQueries.Count равен нулю. Я что-то упустил?

1 Ответ

0 голосов
/ 04 мая 2018

FacetQueries используется для возврата результата из явных запросов фасетов . Вы выполняете обычную огранку. К этому результату можно получить доступ через results.FacetFields. С документация :

var r = solr.Query(...);

foreach (var facet in r.FacetFields["category"]) {
  Console.WriteLine("{0}: {1}", facet.Key, facet.Value);
}
...