Oct 6, 2008, 1:19 PM
Post #4 of 6
(9319 views)
Permalink
Awesome, thanks Erik! I really like the idea of bypassing SolrQuery, and
just using a straight up Hash. It'll be even easier to keep the API
consistent between jruby and standard ruby now.
On Mon, Oct 6, 2008 at 3:59 PM, Erik Hatcher <erik@ehatchersolutions.com>wrote:
> Unfortunately, to call varargs from JRuby (so I just learned from irc's
> #jruby), you have to do this:
>
> query.add_facet_field(['cat'].to_java :string)
>
> anyway, for our solr-jruby purposes, i think we can stick to using the
> ModifiableSolrParams API instead of SolrQuery, but we still get varargs
> issues.
>
> thankfully Ruby solves this relatively nicely...
>
> solr = EmbeddedSolrServer.new(container, "core1")
> query = ModifiableSolrParams.new
> def query.abcd(key, values)
> add(key,(values.is_a?(Array) ? values : [values]).to_java(:string))
> end
> query.abcd('q','*:*')
> query.abcd('facet.field',['cat'])
> response = solr.query(query)
>
> We'll just need to sprinkle a little Ruby fairy dust on some of this clunky
> stuff. It's not all that bad. But the varargs one is strange to me, but
> I'm sure there is some deep technical reason why that support isn't
> intuitive.
>
> Erik
>
>
>
> On Oct 6, 2008, at 1:36 AM, Ryan McKinley wrote:
>
> just guessing, but try passing that as a string[] rather then just a
>> string
>>
>> The java function takes ( string ... v ) -- in java that means you can
>> pass either a string or an array, or a variable length list of strings. I'm
>> guessing that does something funny with jruby
>>
>> ryan
>>
>>
>> On Oct 5, 2008, at 10:54 PM, Matt Mitchell wrote:
>>
>> I've been messing around with jRuby and SolrJ with nice results. But
>>> can't
>>> seem to get the SolrQuery.addFacetField method to work. I get this error:
>>>
>>> "for method addFacetField expected [[Ljava.lang.String;]; got:
>>> [java.lang.String]; error: argument type mismatch (TypeError)"
>>>
>>> I'm using it like:
>>>
>>> query.add_facet_field 'cat'
>>>
>>> and also tried:
>>>
>>> query.addFacetField 'cat'
>>>
>>> Any ideas as to what I'm doing wrong?
>>>
>>> Matt
>>>
>>> p.s. The other methods I've tried work great: set_query, set_query_type,
>>> set_facet, set_facet_limit, set_facet_min_count, set_include_score,
>>> add_sort_field.
>>>
>>
>