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

0

このドキュメントによると: Querying and The 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
};

ありがとう!

于 2019-08-31T23:41:40.107 に答える