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.