如何在使用默认查询时使用solrnet中的boost?

时间:2015-11-20 15:22:35

标签: solr-boost

我正在使用SolrNet对我的默认搜索字段进行查询,而不是在任何特定字段上进行查询。在这种情况下,如何在特定字段上使用Boost?以下是代码段。

List filter = BuildQuerySingleLine(arrParams);

        var customer = solr.Query(parameters.SingleLineSearch, new QueryOptions
        {                
            FilterQueries  = filter,
            SpellCheck = new SpellCheckingParameters { Collate = true },
            OrderBy = new[] { new SortOrder("score", Order.DESC), SortOrder.Parse("score DESC") },
            StartOrCursor = new StartOrCursor.Start(parameters.StartIndex),
            Rows = parameters.NumberOfRows               

        });

2 个答案:

答案 0 :(得分:1)

最后我找到了解决这个问题的方法。为此,我使用了dismax请求处理程序并通过SOLRNET传递了qf param值。

使用此功能,您可以将动态提升值传递给不同字段的SOLR查询。

var extraParams = new Dictionary {{" qt"," dismax" },{" qf"," fieldName ^ 1 FieldName ^ 0.6" }};

var customer = solr.Query(parameters.SingleLineSearch,new QueryOptions             {

            StartOrCursor = new StartOrCursor.Start(parameters.StartIndex),
            Rows = parameters.NumberOfRows,
            }, 
            ExtraParams = extraParams

        });

答案 1 :(得分:0)

根据本文档:QueryingThe DisMax Query Parser

var extraParams = new List<KeyValuePair<string, string>>();

extraParams.Add(new KeyValuePair<string, string>("bq", "SomeQuery^10"));
extraParams.Add(new KeyValuePair<string, string>("bq", "SomeOtherQuery^10"));

var options new new QueryOptions();
options.ExtraParams = extraParams; //Since my List implements the right interface

solr.Query(myQuery, options)

bq参数应用于增强查询。 @Abhijit Guha有一个很好的答案,要在字段上使用相同的想法:qf(查询带有可选增强功能的字段)

QueryOptions options = new QueryOptions
{
    ExtraParams = new KeyValuePair<string, string>[]
    {
        new KeyValuePair<string,string>("qt", "dismax"),
        new KeyValuePair<string,string>("qf", "title^1")
    },
    Rows = 10,
    Start = 0
};

谢谢!