Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SolrNET localParams(用于标记filterQuery)导致多值异常_Solr_Solrnet - Fatal编程技术网

SolrNET localParams(用于标记filterQuery)导致多值异常

SolrNET localParams(用于标记filterQuery)导致多值异常,solr,solrnet,Solr,Solrnet,我试图在SolrNET实现中实现localParams,但在使用多个值的查询中尝试使用localParams作为字段前缀时遇到了问题 我们正在尝试使用localParams来标记和排除过滤器。有关更多信息,请参阅 为了实现这一点,我们需要为我们的filter/facet字段(以下称为field_name)标记filterQuery,并排除facet字段中的标记。标记的facetField排除非常有效,但当选择多个值时,filterQuery会出现问题 我发现生成的查询字符串中的差异如下: 没有l

我试图在SolrNET实现中实现localParams,但在使用多个值的查询中尝试使用localParams作为字段前缀时遇到了问题

我们正在尝试使用localParams来标记和排除过滤器。有关更多信息,请参阅

为了实现这一点,我们需要为我们的filter/facet字段(以下称为field_name)标记filterQuery,并排除facet字段中的标记。标记的facetField排除非常有效,但当选择多个值时,filterQuery会出现问题

我发现生成的查询字符串中的差异如下:

没有localParams:

fq=field_name:"value1,value2"
fq=({!paramKey=paramValue}field_name:"value1" OR {!paramKey=paramValue}field_name:"value2")
使用localParams:

fq=field_name:"value1,value2"
fq=({!paramKey=paramValue}field_name:"value1" OR {!paramKey=paramValue}field_name:"value2")
预期:

fq={!paramKey=paramValue}field_name:"value1,value2"
我们通过调用:
SolrInstance.query(ISolrQuery查询,QueryOptions选项)
启动Solr查询,受此问题影响的筛选器查询可在
QueryOptions.filterquerys
集合中找到,定义如下:

SolrNet.SolrQueryInList
    .FieldName: {!paramKey=paramValue}field_name
    .List
        .string[]
            "value1",
            "value2"
localParam的前缀为
.FieldName
属性。这不起作用,可能是因为Solr没有将
{!paramKey=paramValue}字段_name
识别为有效的字段名,这似乎就是引发异常的原因

任何人都可以就如何在不出现此问题的情况下为SolrNET实现localParams提供任何建议。该实现对单个值运行良好,但对多个值抛出以下异常:

[SolrNet.Exceptions.InvalidFieldException] = {"Bad Request"}
我们正在使用以下版本: SolrNET:v0.3.0 Solr:v4.3.0

将localParams应用于filterQueries的代码如下所示:

foreach (var filterQuery in parameters.FilterQuery)
{
    if (parameters.LocalParams.Any(x => x.Field == filterQuery.Field && x.QueryType == QueryType.Filter))
    {
        var valueDictionary = parameters.LocalParams.Where(x => x.QueryType == QueryType.Filter && x.Field == filterQuery.Field).ToDictionary(param => param.Action, param => param.Value);

        filterQuery.Field = new SolrQuery(new LocalParams(valueDictionary) + filterQuery.Field).Query;
    }
}

上面的代码在filterQueries上迭代,并使用localParams语法作为.Field的前缀。

逗号分隔的值在这里不正确。另请参见,我建议不要依赖于任何SolrNet对象的变异。它们最终都是不变的。