[
https://issues.apache.org/jira/browse/SOLR-3963?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13501406#comment-13501406
]
Hoss Man commented on SOLR-3963:
--------------------------------
bq. I also think it should be like this and was an oversight to begin with.
it definitely wasn't an oversight -- there are many functions like this where
only constants are accepted for some params -- as i said: the motivation was
optimizing the common case, since more complicated functions could be used for
the more complicated cases (the linear float function for example can trivially
be implemented using sum() and prod(), but it's optimized for the common linear
case of slope & intercept being constants)
bq. I personally think we should make all parameters for map() allow for
ValueSource.
For ease of use, I agree ... i just wanted to sound out the possible
performance concerns.
bq. The code could easily switch to Constant using a short-circuit approach
(if parenthesis) to increase performance.
I'm not sure how easy that would be... the VM could/should probably do it once
it notices that the method call is returning a constant, but i can't think of
any (clean) way write the code to do that ... if you want to take a crack at
that would be awesome, but maybe tackle that in a distinct issue?
in the meantime: if you want to update your patch to deal with the other issues
i noted, i'm happy to commit (unless someone else chimes in with objections
about hte performance issue first)
> SOLR: map() does not allow passing sub-functions in 4,5 parameters
> ------------------------------------------------------------------
>
> Key: SOLR-3963
> URL: https://issues.apache.org/jira/browse/SOLR-3963
> Project: Solr
> Issue Type: Improvement
> Affects Versions: 4.0
> Reporter: Bill Bell
> Assignee: Hoss Man
> Priority: Minor
> Fix For: 4.0
>
> Attachments: SOLR-3963.2.patch
>
>
> I want to do:
> boost=map(achievement_count,1,1000,recip(achievement_count,-.5,10,25),1)
> I want to return recip(achievement_count,-.5,10,25) if achievement_count is
> between 1 and 1,000. FOr any other values I want to return 1.
> I cannot get it to work. I get the error below. Interesting this does work:
> boost=recip(map(achievement_count,0,0,-200),-.5,10,25)
> It almost appears that map() cannot take a function.
> Specified argument was out of the range of valid values.
> Parameter name: value
> Description: An unhandled exception occurred during the execution of the
> current web request. Please review the stack trace for more information about
> the error and where it originated in the code.
> Exception Details: System.ArgumentOutOfRangeException: Specified argument was
> out of the range of valid values.
> Parameter name: value
> Source Error:
> An unhandled exception was generated during the execution of the current web
> request. Information regarding the origin and location of the exception can
> be identified using the exception stack trace below.
> Stack Trace:
> [ArgumentOutOfRangeException: Specified argument was out of the range of
> valid values.
> Parameter name: value]
> System.Web.HttpResponse.set_StatusDescription(String value) +5200522
> FacilityService.Controllers.FacilityController.ActionCompleted(String
> actionName, IFacilityResults results) +265
>
> FacilityService.Controllers.FacilityController.SearchByPointCompleted(IFacilityResults
> results) +25
> lambda_method(Closure , ControllerBase , Object[] ) +114
> System.Web.Mvc.Async.<>c__DisplayClass7.<BeginExecute>b__5(IAsyncResult
> asyncResult) +283
>
> System.Web.Mvc.Async.<>c__DisplayClass41.<BeginInvokeAsynchronousActionMethod>b__40(IAsyncResult
> asyncResult) +22
>
> System.Web.Mvc.Async.<>c__DisplayClass3b.<BeginInvokeActionMethodWithFilters>b__35()
> +120
>
> System.Web.Mvc.Async.<>c__DisplayClass51.<InvokeActionMethodFilterAsynchronously>b__4b()
> +452
>
> System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__38(IAsyncResult
> asyncResult) +15
> System.Web.Mvc.Async.<>c__DisplayClass2c.<BeginInvokeAction>b__22() +33
>
> System.Web.Mvc.Async.<>c__DisplayClass27.<BeginInvokeAction>b__24(IAsyncResult
> asyncResult) +240
> System.Web.Mvc.<>c__DisplayClass19.<BeginExecuteCore>b__14(IAsyncResult
> asyncResult) +28
>
> System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult
> ar) +15
> System.Web.Mvc.AsyncController.EndExecuteCore(IAsyncResult asyncResult) +63
>
> System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult
> ar) +15
> System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__4(IAsyncResult
> asyncResult) +42
>
> System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult
> ar) +15
> System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult
> ar) +282
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]