我是第一次使用 Solr 和 Solrnet。
我设法创建了一个模式,其中包含以下字段:
created_date DateTime
parent_id int
categories string multi-valued
我已经能够针对该parent_id
领域进行基本搜索,如下所示:
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<SolrNode>>();
ICollection<SolrNode> results = solr.Query(new SolrQueryByField("parent_id", currentNode.Id.ToString()));
我已经能够弄清楚(某种)如何为我的所有结果返回方面,如下所示:
var solrFacet = ServiceLocator.Current.GetInstance<ISolrOperations<SolrNode>>();
var r = solrFacet.Query(SolrQuery.All, new QueryOptions
{
Rows = 0,
Facet = new FacetParameters
{
Queries = new[] {
//new SolrFacetDateQuery("created_date", DateTime.Now /* range start */, DateTime.Now.AddMonths(-6) /* range end */, "+1DAY" /* gap */) {
// HardEnd = true,
// Other = new[] {FacetDateOther.After, FacetDateOther.Before}
//}
new SolrFacetDateQuery("created_date", new DateTime(2011, 1, 1).AddDays(-1) /* range start */, new DateTime(2014, 1, 1).AddMonths(1) /* range end */, "+1MONTH" /* gap */) {
HardEnd = true,
Other = new[] {FacetDateOther.After, FacetDateOther.Before}
}
//,
//new SolrFacetFieldQuery("categories")
},
}
});
//foreach (var facet in r.FacetFields["categories"])
//{
// this.DebugLiteral.Text += string.Format("{0}: {1}{2}", facet.Key, facet.Value, "<br />");
//}
DateFacetingResult dateFacetResult = r.FacetDates["created_date"];
foreach (KeyValuePair<DateTime, int> dr in dateFacetResult.DateResults)
{
this.DebugLiteral.Text += string.Format("{0}: {1}{2}", dr.Key, dr.Value, "<br />");
}
但我无法弄清楚如何将它们全部连接在一起。我的要求如下:
页面加载 - 显示 parent_id 与 N 匹配的所有搜索结果。查询搜索结果的构面并显示构面的复选框,如下所示:
类别
- 第一类
- 第 2 类
内
- 上周
- 上个月
- 过去 3 个月
- 过去 6 个月
- 整天
用户单击相关复选框,然后代码执行另一个 solr 查询,同时传入 parent_id 条件以及用户选择的方面。
我意识到在我的描述中我已经简化了这个过程,也许在 StackOverflow 上问这个问题是一个很大的问题,所以我当然不期待一个可行的例子(尽管如果你感到无聊,请随意;-))但是任何人都可以提供任何指示或示例吗?SolrNet 确实有一个 MVC 示例应用程序,但我正在使用 WebForms,而且对 MVC 还不是特别满意。
任何帮助将不胜感激。
提前感谢艾尔