lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Erik Hatcher <erik.hatc...@gmail.com>
Subject Re: Using parameter values in a sort
Date Wed, 01 Mar 2017 18:14:51 GMT
Walter -

Apologies for not trying this sooner first-hand.   I’m used to passing in all the params
(even the dynamic ${…} ones) in the request these days, not so much putting them into request
handler definitions.

I finally tried it with a default (master/trunk) with modifying the /browse handler with this:

  <requestHandler name="/browse" class="solr.SearchHandler" useParams="query,facets,velocity,browse">
    <lst name="defaults">
      <str name="echoParams">explicit</str>
      <str name="sort">${sort_field} desc</str>
    </lst>
  </requestHandler>

And get this startup error:

Caused by: org.apache.solr.common.SolrException: No system property or default value specified
for sort_field value:${sort_field} desc
	at org.apache.solr.util.PropertiesUtil.substituteProperty(PropertiesUtil.java:65)
	at org.apache.solr.util.DOMUtil.substituteProperties(DOMUtil.java:303)

*sigh* and sorry for leading you astray.   Definitely a Solr bug.

However, this technique does work when everything is in the params:

    /select?q=*:*&sort=${sort_field}%20desc&sort_field=id

@Yonik or others - is this a known/filed issue?    Workarounds or escaping that could make
it work?

	Erik


> On Feb 27, 2017, at 10:39 PM, Walter Underwood <wunder@wunderwood.org> wrote:
> 
> No, I tried that before adding the default.
> 
> But the solrconfig.xml is rejected before there is a request, so this is not about requests.
I did try “scores” in the requests, but of course it didn’t work because the solrconfig.xml
was not loaded. I did not turn off parameter substitutions. This is a pretty vanilla solrconfig.xml.
> 
> wunder
> Walter Underwood
> wunder@wunderwood.org
> http://observer.wunderwood.org/  (my blog)
> 
> 
>> On Feb 27, 2017, at 6:44 PM, Erik Hatcher <erik.hatcher@gmail.com> wrote:
>> 
>> `scores` (plural), you’ve got this below:   <str name="scores"></str>
>> 
>> Remove that, and like my previous e-mail, and use `scores` (plural) from the request
and _should_ work?
>> 
>> 	Erik
>> 
>>> On Feb 27, 2017, at 9:42 PM, Walter Underwood <wunder@wunderwood.org> wrote:
>>> 
>>> I’ve passed in a score parameter, but the solrconfig.xml is rejected before
any requests.
>>> 
>>> Pretty ready to give up. The documentation around function queries and params
is not working for me, though I’ve been using Solr for ten years. I have figured out a lot
of systems. This is impenetrable.
>>> 
>>> wunder
>>> Walter Underwood
>>> wunder@wunderwood.org
>>> http://observer.wunderwood.org/  (my blog)
>>> 
>>> 
>>>> On Feb 27, 2017, at 6:35 PM, Erik Hatcher <erik.hatcher@gmail.com>
wrote:
>>>> 
>>>> You have an empty “scores” parameter in there.  You’re not showing
your full search request, but did you provide that in the request?   Have you perhaps turned
off parameter substitutions?
>>>> 
>>>> 	Erik
>>>> 
>>>>> On Feb 27, 2017, at 9:26 PM, Walter Underwood <wunder@wunderwood.org>
wrote:
>>>>> 
>>>>> With this in the config…
>>>>> 
>>>>> <requestHandler name="/display_tutor_rank" class="solr.SearchHandler">
>>>>> <!-- Note! Needs FuzzyDismax handler! --> 
>>>>> <lst name="defaults">
>>>>>   <str name="defType">edismax</str>
>>>>>   <str name="mm">0</str>
>>>>>   <bool name="lowercaseOperators">false</bool>
>>>>>   <str name="fl">id,
>>>>>   image_thumb_large, image_thumb_medium, image_thumb_small,
>>>>>   image_thumb_xlarge, uri, user_id, last_name, first_name,
>>>>>   name, school, major, graduation_year, tutor_profile_id,
>>>>>   positive_reviews, negative_reviews, gender, about_experience,
>>>>>   about_extracurricular, time_approved</str>
>>>>>   <str name="q.alt">*:*</str>
>>>>>   <str name="qf">about_experience  about_extracurricular School
 Major</str>
>>>>>   <str name="scores"></str>
>>>>>   <str name="sort">sum(interaction_responsiveness_score,profile_completeness_score,school_score,us_tax_id_score,highlight_score,${scores})
desc</str>
>>>>>   <str name="boost">log(sum(1,max(positive_reviews,0)))</str>
>>>>>   <str name="tie">0.1</str>
>>>>> </lst>
>>>>> </requestHandler>
>>>>> 
>>>>> I see this… [Solr 6.3.0]
>>>>> 
>>>>> org.apache.solr.common.SolrException: Unable to reload core [tutors_shard1_replica11]
>>>>> 	at org.apache.solr.core.CoreContainer.reload(CoreContainer.java:950)
>>>>> 	at org.apache.solr.core.SolrCore.lambda$getConfListener$6(SolrCore.java:2708)
>>>>> 	at org.apache.solr.cloud.ZkController.lambda$fireEventListeners$4(ZkController.java:2448)
>>>>> 	at java.lang.Thread.run(Thread.java:745)
>>>>> Caused by: org.apache.solr.common.SolrException: Could not load conf
for core tutors_shard1_replica11: Error loading solr config from solrconfig.xml
>>>>> 	at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:85)
>>>>> 	at org.apache.solr.core.CoreContainer.reload(CoreContainer.java:942)
>>>>> 	... 3 more
>>>>> Caused by: org.apache.solr.common.SolrException: Error loading solr config
from solrconfig.xml
>>>>> 	at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:187)
>>>>> 	at org.apache.solr.core.ConfigSetService.createSolrConfig(ConfigSetService.java:97)
>>>>> 	at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:77)
>>>>> 	... 4 more
>>>>> Caused by: org.apache.solr.common.SolrException: No system property or
default value specified for scores value:sum(interaction_responsiveness_score,profile_completeness_score,school_score,us_tax_id_score,highlight_score,${scores})
desc
>>>>> 	at org.apache.solr.util.PropertiesUtil.substituteProperty(PropertiesUtil.java:65)
>>>>> 	at org.apache.solr.util.DOMUtil.substituteProperties(DOMUtil.java:298)
>>>>> 
>>>>> wunder
>>>>> Walter Underwood
>>>>> wunder@wunderwood.org
>>>>> http://observer.wunderwood.org/  (my blog)
>>>>> 
>>>>> 
>>>>>> On Feb 27, 2017, at 6:17 PM, Erik Hatcher <erik.hatcher@gmail.com>
wrote:
>>>>>> 
>>>>>> Walter -
>>>>>> 
>>>>>> How about this, for the latter part of your request:
>>>>>> 
>>>>>> /handler?features=a,b,c
>>>>>> 
>>>>>> with &sort=sum(${features}) desc
>>>>>> 
>>>>>> That ought to do the trick.   At first I thought the #foreach nature
of the list of features was prohibitive, but since you’re literally plugging in the exact
string value and it’s used as a comma-separated list then this should work.
>>>>>> 
>>>>>> But with the just a list of subject ID’s I think you’re in custom
development now (or a JavaScript stage in a Fusion query pipeline ;) in building a SearchComponent
that takes a `features` parameter and builds the sort param as needed from that.
>>>>>> 
>>>>>> 	Erik
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On Feb 27, 2017, at 7:17 PM, Walter Underwood <wunder@wunderwood.org>
wrote:
>>>>>>> 
>>>>>>> We have documents with parameterized features. For a school subject
(calculus, accounting), we have three sets of features. So for subject=4 and subject=186,
we have:
>>>>>>> 
>>>>>>> feature_a_4: 0.9
>>>>>>> feature_b_4: 1.6
>>>>>>> feature_c_4: 8.2
>>>>>>> feature_a_186: 3.0
>>>>>>> feature_b_186: 2.1
>>>>>>> feature_c_186: 99.2
>>>>>>> 
>>>>>>> I’d like to pass in the subject IDs and make a function query
(for sorting) from those, ending up with
>>>>>>> 
>>>>>>> sum(feature_x, feature_y, feature_a_4, feature_b_4, feature_c_4,
feature_a_186, feature_b_186, feature c_186) desc
>>>>>>> 
>>>>>>> That would be used for the sort parameter.
>>>>>>> 
>>>>>>> Failing that, it would be nice so just pass in the parameterized
portion, like this:
>>>>>>> 
>>>>>>> /handler?features=feature_a_4,feature_b_4,feature_c_4,feature_a_186,feature_b_186,feature
c_186
>>>>>>> 
>>>>>>> Right now, I can’t even make a solrconfig.xml that will load.
I’ve read everything I can find on params and function queries.
>>>>>>> 
>>>>>>> wunder
>>>>>>> Walter Underwood
>>>>>>> wunder@wunderwood.org
>>>>>>> http://observer.wunderwood.org/  (my blog)
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 


Mime
View raw message