1

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

列表过滤器 = 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               

        });
4

2 回答 2

2

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

有了这个,您可以在不同的字段上将动态提升值传递给 SOLR 查询。

var extraParams = new Dictionary<string, string> { { "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
});
于 2016-01-02T05:05:51.760 回答
0

根据此文档:查询DisMax 查询解析器

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
};

谢谢你!

于 2019-08-31T23:41:40.107 回答