/// <summary>
        /// Configure current instance
        /// </summary>
        /// <param name="query">Query used to make boost</param>
        /// <param name="boostFunctionType">Boost type used in calculation</param>
        public IBoostParameter <TDocument> Configure(ISearchParameterValue <TDocument> query, BoostFunctionType boostFunctionType)
        {
            Checker.IsNull(query);

            this.Query = query;
            this.Query.ExpressionBuilder = this._expressionBuilder;
            this.BoostFunctionType       = boostFunctionType;

            return(this);
        }
        public void BoostParameterTheory001(BoostFunctionType boostFunctionType, string expected)
        {
            // Arrange
            var container         = new List <string>();
            var solrOptions       = new SolrExpressOptions();
            var solrConnection    = new FakeSolrConnection <TestDocument>();
            var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection);

            expressionBuilder.LoadDocument();
            var searchQuery = new SearchQuery <TestDocument>(expressionBuilder);
            var parameter   = (IBoostParameter <TestDocument>) new BoostParameter <TestDocument>();

            parameter.BoostFunctionType = boostFunctionType;
            parameter.Query             = searchQuery.Field(q => q.Id);

            // Act
            ((ISearchItemExecution <List <string> >)parameter).Execute();
            ((ISearchItemExecution <List <string> >)parameter).AddResultInContainer(container);

            // Assert
            Assert.Single(container);
            Assert.Equal(expected, container[0]);
        }
        /// <summary>
        /// Configure boost type used in calculation
        /// </summary>
        /// <param name="parameter">Parameter to configure</param>
        /// <param name="boostFunctionType">Boost type used in calculation</param>
        public static IBoostParameter <TDocument> BoostFunctionType <TDocument>(this IBoostParameter <TDocument> parameter, BoostFunctionType boostFunctionType)
            where TDocument : Document
        {
            parameter.BoostFunctionType = boostFunctionType;

            return(parameter);
        }