【发布时间】:2013-11-13 06:50:52
【问题描述】:
我正在尝试为以下块编写 SolrNet 查询:
q={!boost b=sum(contentscore,1) defType=edismax}te
我们如何为上述 Solr 查询编写基于 SolrNet 的 Linq 或常规 C# 代码?
Solr 服务器版本是 3.6.0
完整的 Solr 查询是:
http://192.192.168.12:8080/solr/select/?rows=10&q={!boost b=sum(contentscore,1) defType=edismax}testingsearchterm&hl=true&group=true&group.ngroups=true&group.truncate=true&group.field=collapse&fq=-type:(file) roles:(1)&facet=on&facet.field=category&f.category.facet.sort=count&f.category.facet.limit=12&f.category.facet.offset=0&f.category.facet.mincount=0&facet.field=user&f.user.facet.sort=count&f.user.facet.limit=12&f.user.facet.offset=0&f.user.facet.mincount=1&facet.field=group&f.group.facet.sort=count&f.group.facet.limit=12&f.group.facet.offset=0&f.group.facet.mincount=1&facet.field=tag&f.tag.facet.sort=count&f.tag.facet.limit=12&f.tag.facet.offset=0&f.tag.facet.mincount=1&facet.query=date:[2013-11-06T02:33:00Z TO 2013-11-13T02:33:00Z]&facet.query=date:[2013-10-13T01:33:00Z TO 2013-11-13T02:33:00Z]&facet.query=date:[2012-11-13T02:33:00Z TO 2013-11-13T02:33:00Z]
我为基本查询编写了以下代码,这些代码将根据上述完整查询进行更改:
var matchingRecords = solr.Query(BuildQuery(parameters), new QueryOptions
{
FilterQueries = BuildFilterQueries(parameters),
Rows = parameters.PageSize,
Start = start,
OrderBy = GetSelectedSort(parameters),
SpellCheck = new SpellCheckingParameters(),
Facet = new FacetParameters
{
Queries = AllFacetFields.Except(SelectedFacetFields(parameters))
.Select(f => new SolrFacetFieldQuery(f) { MinCount = 1 })
.Cast<ISolrFacetQuery>()
.ToList(),
},
});
【问题讨论】:
-
@stephen-pope 你能回答这个问题吗?
-
@MauricioScheffer 感谢您提供该链接。我需要用于提升
q的代码示例。但是,在了解 SolrNet 源代码中的内部逻辑后,我解决了我的问题。我会尽快发布源代码作为答案。