I haven’t fully digested this thread, but wanted to comment on this one.
¶m=$something doesn’t substitute. Only “local” params (inside local param
syntax curly brackets) do that. If you want to substitute a raw parameter use
curly brackets. You could, in this example, use &tt=${state1}, I believe, and
it would substitute. Confusingly, local param curly brackets are _not_ the
same as param substitution curly brackets.
I am skeptical that anything custom is needed for what you’re trying to do, but
again I haven’t fully digested what’s going on here yet. There is some param
substitution and {!switch} voodoo in example/files that ships with Solr, and
that might be helpful. Check out how that works. I’m in the polishing stages
of a a collaborative blog post on example/files that will detail these tricks a
bit - will publish that in the next few days.
—
Erik Hatcher, Senior Solutions Architect
http://www.lucidworks.com <http://www.lucidworks.com/>
> On Jan 1, 2016, at 4:15 PM, William Bell <[email protected]> wrote:
>
> Another weirdness:
>
> http://localhost:8983/solr/providersearch/select?wt=json&state=state:CO&state1=state:NY&fl=*&q=*:*&tt=$state1&fq={!lucene%20v=$tt}
>
> That does not return anything.
>
> But if I set v=$state1 I get results.
>
> Can I not set equivalent variables?
>
>
>
> On Fri, Jan 1, 2016 at 2:07 PM, William Bell <[email protected]> wrote:
>
>> Example.
>>
>>
>> http://localhost:8983/solr/providersearch/select?wt=json&state=state:%22CO%22&state1=state:%22NY%22&fl=ss,score&q=*:*&fq={!lucene%20v=$state1}
>> <http://localhost:8983/solr/providersearch/select?wt=json&state=state:%22CO%22&state1=state:%22NY%22&fl=ss,score&q=*:*&fq=%7B!lucene%20v=$state1%7D>
>>
>> This return 236,000
>>
>>
>> http://localhost:8983/solr/providersearch/select?wt=json&state=state:%22CO%22&state1=state:%22NY%22&fl=ss,score&q=*:*&fq={!lucene%20v=$state}
>> <http://localhost:8983/solr/providersearch/select?wt=json&state=state:%22CO%22&state1=state:%22NY%22&fl=ss,score&q=*:*&fq=%7B!lucene%20v=$state%7D>
>>
>> This returns 10,000
>>
>> I want to put an IF statement around which v to use.
>>
>>
>>
>>
>>
>>
>> On Fri, Jan 1, 2016 at 1:52 PM, William Bell <[email protected]> wrote:
>>
>>> Sure.
>>>
>>> If the state:NY returns results filter by state:NY, if it does not, then
>>> use state:CO. If we have results in NY, use it, otherwise use CO.
>>>
>>> OK?
>>>
>>> On Fri, Jan 1, 2016 at 1:15 PM, Upayavira <[email protected]> wrote:
>>>
>>>>
>>>>
>>>> On Thu, Dec 31, 2015, at 11:50 PM, William Bell wrote:
>>>>> We are getting weird results with if(exists(a),b,c). We are getting
>>>> b+c!!
>>>>>
>>>>>
>>>> http://localhost:8983/solr/providersearch/select?q=*:*&wt=json&state=state:%22CO%22&state1=state:%22NY%22&fq=if(exists(query($state1)),{!lucene%20v=$state1},{!lucene%20v=$state})
>>>> <http://localhost:8983/solr/providersearch/select?q=*:*&wt=json&state=state:%22CO%22&state1=state:%22NY%22&fq=if(exists(query($state1)),%7B!lucene%20v=$state1%7D,%7B!lucene%20v=$state%7D)>
>>>>>
>>>>> I am getting NY and CO!
>>>>>
>>>>> I only want $state1, which is NY.
>>>>>
>>>>> Any other ways to craft this?
>>>>
>>>> Does this work at all?
>>>>
>>>> The if() function is a function query that can be used to sort, boost
>>>> and as calculated fields. I haven't seen them used in filtering.
>>>>
>>>> Also, the query() function does *not* do a query, it just says "what
>>>> would this document score for this query?"
>>>>
>>>> Can you describe in English what you are trying to do?
>>>>
>>>> Upayavira
>>>>
>>>
>>>
>>>
>>> --
>>> Bill Bell
>>> [email protected]
>>> cell 720-256-8076
>>>
>>
>>
>>
>> --
>> Bill Bell
>> [email protected]
>> cell 720-256-8076
>>
>
>
>
> --
> Bill Bell
> [email protected]
> cell 720-256-8076