<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-48</id>
	<title>Nabble - Lucene - Ruby Developer</title>
	<updated>2009-05-02T18:40:44Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/Lucene---Ruby-Developer-f48.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Lucene---Ruby-Developer-f48.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-23351863</id>
	<title>Re: reset solr index</title>
	<published>2009-05-02T18:40:44Z</published>
	<updated>2009-05-02T18:40:44Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">&lt;br&gt;On May 1, 2009, at 11:32 PM, Geetha wrote:
&lt;br&gt;&amp;gt; I've installed solr-ruby and integrated the same also.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I need to clear the solr index.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I need a way to clear the db and also need a function (through solr &amp;nbsp;
&lt;br&gt;&amp;gt; ruby) that will allow us to clear everything.
&lt;br&gt;&lt;br&gt;How are you integrating the DB and Solr? &amp;nbsp; acts_as_solr?
&lt;br&gt;&lt;br&gt;Clearing the Solr index from solr-ruby is as easy as just sending a &amp;nbsp;
&lt;br&gt;delete_by_query of *:* and doing a commit. &amp;nbsp;Details were replied to on &amp;nbsp;
&lt;br&gt;the solr-user list the other day:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;lt;&lt;a href=&quot;http://www.lucidimagination.com/search/document/ff32b0089f2bf142/how_to_reset_the_index_in_solr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.lucidimagination.com/search/document/ff32b0089f2bf142/how_to_reset_the_index_in_solr&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/reset-solr-index-tp23342788p23351863.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23342788</id>
	<title>reset solr index</title>
	<published>2009-05-01T20:32:05Z</published>
	<updated>2009-05-01T20:32:05Z</updated>
	<author>
		<name>sagi4</name>
	</author>
	<content type="html">I have deployed rails application and using search engine is solr.
&lt;br&gt;&lt;br&gt;I've installed solr-ruby and integrated the same also.
&lt;br&gt;&lt;br&gt;I need to clear the solr index.
&lt;br&gt;&lt;br&gt;I need a way to clear the db and also need a function (through solr 
&lt;br&gt;ruby) that will allow us to clear everything.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;** 
&lt;br&gt;*Geetha &amp;nbsp;S *| System and Software Engineer
&lt;br&gt;email: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23342788&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;geetha@...&lt;/a&gt; &amp;lt;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23342788&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;geetha@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;*
&lt;br&gt;*
&lt;br&gt;&lt;br&gt;&lt;br&gt;*
&lt;br&gt;*Visit us at **Internet World, UK** (**28th-30th Apr 2009**)*
&lt;br&gt;*Click here for FREE TICKETS:** 
&lt;br&gt;*&lt;a href=&quot;http://www.angleritech.com/company/latest-technology-news-events.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.angleritech.com/company/latest-technology-news-events.html&lt;/a&gt;&lt;br&gt;*
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;*ANGLER Technologies India - Your Offshore Development Partner -- An ISO 
&lt;br&gt;9001 Company*
&lt;br&gt;&lt;br&gt;Contact us for your high quality Software Outsourcing 
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://www.angleritech.com/offshore/outsourced_product_development.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.angleritech.com/offshore/outsourced_product_development.html&lt;/a&gt;&amp;gt;, 
&lt;br&gt;E-Business Products &amp;lt;&lt;a href=&quot;http://www.angleritech.com/ebusiness/index.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.angleritech.com/ebusiness/index.html&lt;/a&gt;&amp;gt; 
&lt;br&gt;and Design Solutions &amp;lt;&lt;a href=&quot;http://www.angleritech.com/design/index.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.angleritech.com/design/index.html&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;/* */
&lt;br&gt;&lt;br&gt;web &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : &amp;nbsp; &amp;nbsp;www.angleritech.com &amp;lt;&lt;a href=&quot;http://www.angleritech.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.angleritech.com/&lt;/a&gt;&amp;gt;
&lt;br&gt;tel &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : &amp;nbsp; &amp;nbsp;+91 422 2312707, 2313938
&lt;br&gt;fax &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : &amp;nbsp; &amp;nbsp;+91 422 2313936
&lt;br&gt;address &amp;nbsp; :* &amp;nbsp; &amp;nbsp;*1144 Trichy Road, Coimbatore, 641045, India
&lt;br&gt;&lt;br&gt;offices &amp;lt;&lt;a href=&quot;http://www.angleritech.com/contact/index.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.angleritech.com/contact/index.html&lt;/a&gt;&amp;gt;_ _ &amp;nbsp; &amp;nbsp; : &amp;nbsp;
&lt;br&gt;&amp;nbsp; India | USA | UK | Canada | Europe | UAE | South Africa | Singapore | 
&lt;br&gt;Hong Kong
&lt;br&gt;&lt;br&gt;* *
&lt;br&gt;&lt;br&gt;*Disclaimer: *The information in the email, files and communication are 
&lt;br&gt;strictly confidential and meant for the intended recipients. It may 
&lt;br&gt;contain proprietary information. If you are not an intended recipient; 
&lt;br&gt;any form of disclosure, copyright, distribution and any other means of 
&lt;br&gt;use of information is unauthorised and subject to legal implications. We 
&lt;br&gt;do not accept any liability for the transmission of incomplete, delayed 
&lt;br&gt;communication and recipients must check this email and any attachments 
&lt;br&gt;for the presence of viruses before downloading them.
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/reset-solr-index-tp23342788p23342788.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22976800</id>
	<title>Re: solr-ruby - let's get a 1.0!</title>
	<published>2009-04-09T11:30:17Z</published>
	<updated>2009-04-09T11:30:17Z</updated>
	<author>
		<name>goodieboy</name>
	</author>
	<content type="html">So others know... RSolr had some of the object oriented document code
&lt;br&gt;underneath the covers. But just a few days ago, Mat generously created a
&lt;br&gt;patch to expose the option of adding document objects instead of hashes
&lt;br&gt;only. Thanks Mat! Have you had a chance to check out the latest version?
&lt;br&gt;&lt;br&gt;I think that RSolr now looks a lot like what we talked about here:
&lt;br&gt;&lt;a href=&quot;http://markmail.org/message/ujesla5hdgch7xrd&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://markmail.org/message/ujesla5hdgch7xrd&lt;/a&gt;&lt;br&gt;&lt;br&gt;I hope that people will continue to give feedback. Any other ruby+solr users
&lt;br&gt;out there?
&lt;br&gt;&lt;br&gt;Matt
&lt;br&gt;&lt;br&gt;On Mon, Apr 6, 2009 at 6:52 PM, outoftime &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22976800&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mat@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hi all - just wanted to give a big +1 to Matt on this one. I've been
&lt;br&gt;&amp;gt; working
&lt;br&gt;&amp;gt; for a while on a higher-level Solr library in Ruby called Sunspot that
&lt;br&gt;&amp;gt; allows easy indexing/searching of Ruby objects (using a prepackaged
&lt;br&gt;&amp;gt; schema.xml, etc), abstracting all Solr/Lucene syntax away from the API
&lt;br&gt;&amp;gt; consumer.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The current (incomplete) version is built on solr-ruby, but a while ago I
&lt;br&gt;&amp;gt; came across the LocalSolr plugin and thought it would be lovely to include
&lt;br&gt;&amp;gt; LocalSolr support in Sunspot. I began looking for an alternative to
&lt;br&gt;&amp;gt; solr-ruby that would allow me to cleanly use parameters and query types
&lt;br&gt;&amp;gt; that
&lt;br&gt;&amp;gt; aren't part of Solr core, and ran across RSolr. I think passing params
&lt;br&gt;&amp;gt; through transparently is absolutely the right approach here - thus
&lt;br&gt;&amp;gt; developers of higher-level APIs, or application developers who want to
&lt;br&gt;&amp;gt; interact directly with Solr at a low level, are free to add integration
&lt;br&gt;&amp;gt; with
&lt;br&gt;&amp;gt; whatever Solr extensions they might need, without any explicit support from
&lt;br&gt;&amp;gt; the Solr adapter layer.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Having the option of using curb with no extra effort is also a huge bonus.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; One thing I'd like to see in RSolr/solr-ruby 1.0 is an object-oriented
&lt;br&gt;&amp;gt; approach to building documents - in particular, it would be nice to have
&lt;br&gt;&amp;gt; fine-grained control over field boost and that sort of thing, and having an
&lt;br&gt;&amp;gt; explicit Document object would be an intuitive way to do that. Here's a
&lt;br&gt;&amp;gt; simple example from an email discussion (that's been on hold for a few
&lt;br&gt;&amp;gt; weeks
&lt;br&gt;&amp;gt; - sorry Matt!) that Matt and I have been having:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;doc = RSolr::Document.new
&lt;br&gt;&amp;gt; &amp;nbsp;doc.id = 12
&lt;br&gt;&amp;gt; &amp;nbsp;doc.add_field('title_s', 'My Title', :boost =&amp;gt; 2.0)
&lt;br&gt;&amp;gt; &amp;nbsp;solr.add(doc)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; It would make sense to me to have this be RSolr/solr-ruby's internal
&lt;br&gt;&amp;gt; representation of documents, with appropriate conversion from the simpler
&lt;br&gt;&amp;gt; hash format when that is sufficient for API users' expression of documents.
&lt;br&gt;&amp;gt; If time allows, I'm hoping to contribute a patch to RSolr to this effect in
&lt;br&gt;&amp;gt; the near future, but of course it would be interesting to hear everyone's
&lt;br&gt;&amp;gt; thoughts.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If anyone's curious, Sunspot is at &lt;a href=&quot;http://github.com/outoftime/sunspot&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/outoftime/sunspot&lt;/a&gt;&amp;nbsp;-
&lt;br&gt;&amp;gt; comments, criticism, etc. more than welcome.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks!
&lt;br&gt;&amp;gt; Mat
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; goodieboy wrote:
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Solr-Ruby folks,
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; A while ago, I started some discussions about updating solr-ruby. Some of
&lt;br&gt;&amp;gt; &amp;gt; the things I brought up were related to the way that solr-ruby handles
&lt;br&gt;&amp;gt; &amp;gt; param
&lt;br&gt;&amp;gt; &amp;gt; mapping and response/request handling. Other folks have expressed the
&lt;br&gt;&amp;gt; need
&lt;br&gt;&amp;gt; &amp;gt; for jRuby support.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; In an effort to get some development happening on this front, Erik
&lt;br&gt;&amp;gt; Hatcher
&lt;br&gt;&amp;gt; &amp;gt; created a refectoring branch within the solr-ruby repo. I ended up doing
&lt;br&gt;&amp;gt; &amp;gt; my
&lt;br&gt;&amp;gt; &amp;gt; own development in a github repository because I had all kinds of nutty
&lt;br&gt;&amp;gt; &amp;gt; ideas, and didn't want to bombard Erik with patches.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; I now have what I'm considering to be a very solid code base, complete
&lt;br&gt;&amp;gt; &amp;gt; with
&lt;br&gt;&amp;gt; &amp;gt; jRuby support. This library does no param mapping, and no
&lt;br&gt;&amp;gt; request/response
&lt;br&gt;&amp;gt; &amp;gt; class mapping; what you put in is what Solr gets, and what Solr returns
&lt;br&gt;&amp;gt; is
&lt;br&gt;&amp;gt; &amp;gt; what you get. In addition, it features a http adapter layer, so you can
&lt;br&gt;&amp;gt; &amp;gt; switch between different http client implementations. The built in
&lt;br&gt;&amp;gt; &amp;gt; adapters
&lt;br&gt;&amp;gt; &amp;gt; are Net::HTTP and Curb. Etc..
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; I'm asking the solr-ruby community (YOU!) to please have a look at this
&lt;br&gt;&amp;gt; &amp;gt; library and offer your thoughts/opinions on it's capabilities and design.
&lt;br&gt;&amp;gt; &amp;gt; Do
&lt;br&gt;&amp;gt; &amp;gt; you seen this as a possible refectored base for solr-ruby? Is there
&lt;br&gt;&amp;gt; &amp;gt; anything
&lt;br&gt;&amp;gt; &amp;gt; there that you think could benefit solr-ruby? What are your thoughts on
&lt;br&gt;&amp;gt; &amp;gt; getting solr-ruby to a 1.0 release?
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Here's the library I've been working on:
&lt;br&gt;&amp;gt; &amp;gt; &lt;a href=&quot;http://github.com/mwmitchell/rsolr/tree/master&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/mwmitchell/rsolr/tree/master&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Thanks!
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Matt
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; View this message in context:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/solr-ruby---let%27s-get-a-1.0%21-tp22501321p22919097.html&quot; target=&quot;_top&quot;&gt;http://www.nabble.com/solr-ruby---let%27s-get-a-1.0%21-tp22501321p22919097.html&lt;/a&gt;&lt;br&gt;&amp;gt; Sent from the Lucene - Ruby Developer mailing list archive at Nabble.com.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/solr-ruby---let%27s-get-a-1.0%21-tp22501321p22976800.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22919097</id>
	<title>Re: solr-ruby - let's get a 1.0!</title>
	<published>2009-04-06T15:52:36Z</published>
	<updated>2009-04-06T15:52:36Z</updated>
	<author>
		<name>outoftime</name>
	</author>
	<content type="html">Hi all - just wanted to give a big +1 to Matt on this one. I've been working for a while on a higher-level Solr library in Ruby called Sunspot that allows easy indexing/searching of Ruby objects (using a prepackaged schema.xml, etc), abstracting all Solr/Lucene syntax away from the API consumer.
&lt;br&gt;&lt;br&gt;The current (incomplete) version is built on solr-ruby, but a while ago I came across the LocalSolr plugin and thought it would be lovely to include LocalSolr support in Sunspot. I began looking for an alternative to solr-ruby that would allow me to cleanly use parameters and query types that aren't part of Solr core, and ran across RSolr. I think passing params through transparently is absolutely the right approach here - thus developers of higher-level APIs, or application developers who want to interact directly with Solr at a low level, are free to add integration with whatever Solr extensions they might need, without any explicit support from the Solr adapter layer.
&lt;br&gt;&lt;br&gt;Having the option of using curb with no extra effort is also a huge bonus.
&lt;br&gt;&lt;br&gt;One thing I'd like to see in RSolr/solr-ruby 1.0 is an object-oriented approach to building documents - in particular, it would be nice to have fine-grained control over field boost and that sort of thing, and having an explicit Document object would be an intuitive way to do that. Here's a simple example from an email discussion (that's been on hold for a few weeks - sorry Matt!) that Matt and I have been having:
&lt;br&gt;&lt;br&gt;&amp;nbsp; doc = RSolr::Document.new
&lt;br&gt;&amp;nbsp; doc.id = 12
&lt;br&gt;&amp;nbsp; doc.add_field('title_s', 'My Title', :boost =&amp;gt; 2.0)
&lt;br&gt;&amp;nbsp; solr.add(doc)
&lt;br&gt;&lt;br&gt;It would make sense to me to have this be RSolr/solr-ruby's internal representation of documents, with appropriate conversion from the simpler hash format when that is sufficient for API users' expression of documents. If time allows, I'm hoping to contribute a patch to RSolr to this effect in the near future, but of course it would be interesting to hear everyone's thoughts.
&lt;br&gt;&lt;br&gt;If anyone's curious, Sunspot is at &lt;a href=&quot;http://github.com/outoftime/sunspot&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/outoftime/sunspot&lt;/a&gt;&amp;nbsp;- comments, criticism, etc. more than welcome.
&lt;br&gt;&lt;br&gt;Thanks!
&lt;br&gt;Mat
&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;goodieboy wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;Solr-Ruby folks,
&lt;br&gt;&lt;br&gt;A while ago, I started some discussions about updating solr-ruby. Some of
&lt;br&gt;the things I brought up were related to the way that solr-ruby handles param
&lt;br&gt;mapping and response/request handling. Other folks have expressed the need
&lt;br&gt;for jRuby support.
&lt;br&gt;&lt;br&gt;In an effort to get some development happening on this front, Erik Hatcher
&lt;br&gt;created a refectoring branch within the solr-ruby repo. I ended up doing my
&lt;br&gt;own development in a github repository because I had all kinds of nutty
&lt;br&gt;ideas, and didn't want to bombard Erik with patches.
&lt;br&gt;&lt;br&gt;I now have what I'm considering to be a very solid code base, complete with
&lt;br&gt;jRuby support. This library does no param mapping, and no request/response
&lt;br&gt;class mapping; what you put in is what Solr gets, and what Solr returns is
&lt;br&gt;what you get. In addition, it features a http adapter layer, so you can
&lt;br&gt;switch between different http client implementations. The built in adapters
&lt;br&gt;are Net::HTTP and Curb. Etc..
&lt;br&gt;&lt;br&gt;I'm asking the solr-ruby community (YOU!) to please have a look at this
&lt;br&gt;library and offer your thoughts/opinions on it's capabilities and design. Do
&lt;br&gt;you seen this as a possible refectored base for solr-ruby? Is there anything
&lt;br&gt;there that you think could benefit solr-ruby? What are your thoughts on
&lt;br&gt;getting solr-ruby to a 1.0 release?
&lt;br&gt;&lt;br&gt;Here's the library I've been working on:
&lt;br&gt;&lt;a href=&quot;http://github.com/mwmitchell/rsolr/tree/master&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/mwmitchell/rsolr/tree/master&lt;/a&gt;&lt;br&gt;&lt;br&gt;Thanks!
&lt;br&gt;&lt;br&gt;Matt
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/solr-ruby---let%27s-get-a-1.0%21-tp22501321p22919097.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22501321</id>
	<title>solr-ruby - let's get a 1.0!</title>
	<published>2009-03-13T10:24:05Z</published>
	<updated>2009-03-13T10:24:05Z</updated>
	<author>
		<name>goodieboy</name>
	</author>
	<content type="html">Solr-Ruby folks,
&lt;br&gt;&lt;br&gt;A while ago, I started some discussions about updating solr-ruby. Some of
&lt;br&gt;the things I brought up were related to the way that solr-ruby handles param
&lt;br&gt;mapping and response/request handling. Other folks have expressed the need
&lt;br&gt;for jRuby support.
&lt;br&gt;&lt;br&gt;In an effort to get some development happening on this front, Erik Hatcher
&lt;br&gt;created a refectoring branch within the solr-ruby repo. I ended up doing my
&lt;br&gt;own development in a github repository because I had all kinds of nutty
&lt;br&gt;ideas, and didn't want to bombard Erik with patches.
&lt;br&gt;&lt;br&gt;I now have what I'm considering to be a very solid code base, complete with
&lt;br&gt;jRuby support. This library does no param mapping, and no request/response
&lt;br&gt;class mapping; what you put in is what Solr gets, and what Solr returns is
&lt;br&gt;what you get. In addition, it features a http adapter layer, so you can
&lt;br&gt;switch between different http client implementations. The built in adapters
&lt;br&gt;are Net::HTTP and Curb. Etc..
&lt;br&gt;&lt;br&gt;I'm asking the solr-ruby community (YOU!) to please have a look at this
&lt;br&gt;library and offer your thoughts/opinions on it's capabilities and design. Do
&lt;br&gt;you seen this as a possible refectored base for solr-ruby? Is there anything
&lt;br&gt;there that you think could benefit solr-ruby? What are your thoughts on
&lt;br&gt;getting solr-ruby to a 1.0 release?
&lt;br&gt;&lt;br&gt;Here's the library I've been working on:
&lt;br&gt;&lt;a href=&quot;http://github.com/mwmitchell/rsolr/tree/master&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/mwmitchell/rsolr/tree/master&lt;/a&gt;&lt;br&gt;&lt;br&gt;Thanks!
&lt;br&gt;&lt;br&gt;Matt
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/solr-ruby---let%27s-get-a-1.0%21-tp22501321p22501321.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22361280</id>
	<title>Re: sorl-ruby facet.method</title>
	<published>2009-03-05T13:33:56Z</published>
	<updated>2009-03-05T13:33:56Z</updated>
	<author>
		<name>Ian Connor</name>
	</author>
	<content type="html">I agree that remapping params is not that much fun. I certainly vote for
&lt;br&gt;just passing them through and it will be easier to keep up with the latest
&lt;br&gt;as well.
&lt;br&gt;&lt;br&gt;I created:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;https://issues.apache.org/jira/browse/SOLR-1047&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/jira/browse/SOLR-1047&lt;/a&gt;&lt;br&gt;&lt;br&gt;Let me know if there is something else I can do to help.
&lt;br&gt;&lt;br&gt;On Thu, Mar 5, 2009 at 3:19 PM, Erik Hatcher &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22361280&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;&amp;gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; First, note we have a &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22361280&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-dev@...&lt;/a&gt; list which focuses
&lt;br&gt;&amp;gt; primarily on the solr-ruby library, flare, and other Ruby specific things.
&lt;br&gt;&amp;gt; &amp;nbsp;But this forum is as good as any, though I'm CC'ing ruby-dev too.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Mar 5, 2009, at 12:59 PM, Ian Connor wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Is there a way to specify the facet.method using solr-ruby. I tried to add
&lt;br&gt;&amp;gt;&amp;gt; it like this:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; hash[&amp;quot;facet.method&amp;quot;] = @params[:facets][:method] if
&lt;br&gt;&amp;gt;&amp;gt; @params[:facets][:method]
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; That's a reasonable addition, however we're about to do a refactoring of
&lt;br&gt;&amp;gt; solr-ruby to bring in the great contributions Matt Mitchell has been doing
&lt;br&gt;&amp;gt; with his RSolr project. &amp;nbsp;We're going to strip away all the parameter
&lt;br&gt;&amp;gt; mangling/mapping and just simply pass through parameters to Solr (and leave
&lt;br&gt;&amp;gt; clever mapping of things like :query -&amp;gt; &amp;q= to folks that want to add that
&lt;br&gt;&amp;gt; construct to their own applications).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;to line 78 of standard.rb and it works when you add it to the facets Hash.
&lt;br&gt;&amp;gt;&amp;gt; However, if there is another place that I could set that would be great.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; One option is to provide your own request/response classes, subclassing
&lt;br&gt;&amp;gt; Solr::Request(and Response)::Standard if you want to just hack this for now.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;I am also happy to submit a patch on a ticket if that works.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The above being said, I'd gladly commit your patch right away. &amp;nbsp;Submit it
&lt;br&gt;&amp;gt; via JIRA and consider it done. &amp;nbsp; We'll do one final release (0.9?) of the
&lt;br&gt;&amp;gt; current solr-ruby library before we gut it and simplify it (and do our best
&lt;br&gt;&amp;gt; to provide backwards compatibility to the 0.x versions) for a 1.0 version.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Erik
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Regards,
&lt;br&gt;&lt;br&gt;Ian Connor
&lt;br&gt;1 Leighton St #723
&lt;br&gt;Cambridge, MA 02141
&lt;br&gt;Call Center Phone: +1 (714) 239 3875 (24 hrs)
&lt;br&gt;Fax: +1(770) 818 5697
&lt;br&gt;Skype: ian.connor
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-sorl-ruby-facet.method-tp22359761p22361280.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22359761</id>
	<title>Re: sorl-ruby facet.method</title>
	<published>2009-03-05T12:19:08Z</published>
	<updated>2009-03-05T12:19:08Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">First, note we have a &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22359761&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-dev@...&lt;/a&gt; list which focuses &amp;nbsp;
&lt;br&gt;primarily on the solr-ruby library, flare, and other Ruby specific &amp;nbsp;
&lt;br&gt;things. &amp;nbsp;But this forum is as good as any, though I'm CC'ing ruby-dev &amp;nbsp;
&lt;br&gt;too.
&lt;br&gt;&lt;br&gt;On Mar 5, 2009, at 12:59 PM, Ian Connor wrote:
&lt;br&gt;&amp;gt; Is there a way to specify the facet.method using solr-ruby. I tried &amp;nbsp;
&lt;br&gt;&amp;gt; to add
&lt;br&gt;&amp;gt; it like this:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;hash[&amp;quot;facet.method&amp;quot;] = @params[:facets][:method] if
&lt;br&gt;&amp;gt; @params[:facets][:method]
&lt;br&gt;&lt;br&gt;That's a reasonable addition, however we're about to do a refactoring &amp;nbsp;
&lt;br&gt;of solr-ruby to bring in the great contributions Matt Mitchell has &amp;nbsp;
&lt;br&gt;been doing with his RSolr project. &amp;nbsp;We're going to strip away all the &amp;nbsp;
&lt;br&gt;parameter mangling/mapping and just simply pass through parameters to &amp;nbsp;
&lt;br&gt;Solr (and leave clever mapping of things like :query -&amp;gt; &amp;q= to folks &amp;nbsp;
&lt;br&gt;that want to add that construct to their own applications).
&lt;br&gt;&lt;br&gt;&amp;gt; to line 78 of standard.rb and it works when you add it to the facets &amp;nbsp;
&lt;br&gt;&amp;gt; Hash.
&lt;br&gt;&amp;gt; However, if there is another place that I could set that would be &amp;nbsp;
&lt;br&gt;&amp;gt; great.
&lt;br&gt;&lt;br&gt;One option is to provide your own request/response classes, &amp;nbsp;
&lt;br&gt;subclassing Solr::Request(and Response)::Standard if you want to just &amp;nbsp;
&lt;br&gt;hack this for now.
&lt;br&gt;&lt;br&gt;&amp;gt; I am also happy to submit a patch on a ticket if that works.
&lt;br&gt;&lt;br&gt;The above being said, I'd gladly commit your patch right away. &amp;nbsp;Submit &amp;nbsp;
&lt;br&gt;it via JIRA and consider it done. &amp;nbsp; We'll do one final release (0.9?) &amp;nbsp;
&lt;br&gt;of the current solr-ruby library before we gut it and simplify it (and &amp;nbsp;
&lt;br&gt;do our best to provide backwards compatibility to the 0.x versions) &amp;nbsp;
&lt;br&gt;for a 1.0 version.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-sorl-ruby-facet.method-tp22359761p22359761.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21519595</id>
	<title>Re: [acts_as_solr] Re: acts_as_solr returns all db rows when using model name as query</title>
	<published>2009-01-17T10:58:43Z</published>
	<updated>2009-01-17T10:58:43Z</updated>
	<author>
		<name>Erik Hatcher-3</name>
	</author>
	<content type="html">Cross posting a little...
&lt;br&gt;&lt;br&gt;On Jan 17, 2009, at 7:24 AM, Matthew Rudy Jacobs wrote:
&lt;br&gt;&amp;gt; Nice Erik.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://wiki.apache.org/solr/CommonQueryParameters#fq&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://wiki.apache.org/solr/CommonQueryParameters#fq&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I need to get to understand solr as a service, rather than just
&lt;br&gt;&amp;gt; understanding ActsAsSolr.
&lt;br&gt;&amp;gt; Feels like most of our queries are done wrong, as we don't use this
&lt;br&gt;&amp;gt; &amp;quot;filter query&amp;quot; param.
&lt;br&gt;&lt;br&gt;Yeah, for sure. &amp;nbsp;acts_as_solr really could shine with more pluggable &amp;nbsp;
&lt;br&gt;param handling/mapping to Solr. &amp;nbsp;There's a lot of Solr trickery that &amp;nbsp;
&lt;br&gt;keeps on getting added. &amp;nbsp;Faceting, for example, can really do some &amp;nbsp;
&lt;br&gt;wacky cool stuff with the local params:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;a href=&quot;http://wiki.apache.org/solr/SimpleFacetParameters#head-f277d409b221b407d9c5430f552bf40ee6185c4c&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://wiki.apache.org/solr/SimpleFacetParameters#head-f277d409b221b407d9c5430f552bf40ee6185c4c&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&lt;br&gt;It'd be sweet to have some Rubyish way to map those things. &amp;nbsp;Matt, &amp;nbsp;
&lt;br&gt;CC'd, has some really great RSolr stuff rolling on github. &amp;nbsp;I've been &amp;nbsp;
&lt;br&gt;so swamped to give the attention to these things, sadly.
&lt;br&gt;&lt;br&gt;Regarding consolidating the codebase: I'd really like to see folks &amp;nbsp;
&lt;br&gt;maintaining the solr-ruby library, pulling in RSolr and getting rid of &amp;nbsp;
&lt;br&gt;the ugly stuff, make the good stuff even better, and keep a nice test &amp;nbsp;
&lt;br&gt;suite. &amp;nbsp;Not being a relational database kinda guy, I've not really &amp;nbsp;
&lt;br&gt;given aas much attention, but it deserves it. &amp;nbsp;I invite the aas, solr- 
&lt;br&gt;ruby, and RSolr communities (and Flare too, if there is anyone using &amp;nbsp;
&lt;br&gt;it besides me in demos ;) to consider proposing and submitting code to &amp;nbsp;
&lt;br&gt;the /clients/ruby/solr-ruby (or renamed to rsolr?) Subversion repo. &amp;nbsp; 
&lt;br&gt;It's not as easy a process as just propping up a github area, but it &amp;nbsp;
&lt;br&gt;does offer support from the broader Solr community and allows this &amp;nbsp;
&lt;br&gt;Ruby library to just simply ship with each version of Solr as a built- 
&lt;br&gt;in gem, plugin, what-have-you that is 100% compatible, etc. &amp;nbsp; 
&lt;br&gt;Interested parties in aiming towards this, cull together on ruby- 
&lt;br&gt;dev@lucene and get us a codebase/patches to bringing in AAS, and any &amp;nbsp;
&lt;br&gt;other best-of Solr/Ruby goodness.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A--acts_as_solr--Re%3A-acts_as_solr-returns-all-db-rows-when-using-model-name-as-query-tp21519595p21519595.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21207853</id>
	<title>Re: solr ruby code update</title>
	<published>2008-12-29T11:22:53Z</published>
	<updated>2008-12-29T11:22:53Z</updated>
	<author>
		<name>goodieboy</name>
	</author>
	<content type="html">There have been lots of updates on this. More tests and features! And yes,
&lt;br&gt;:auto_commit is gone :)
&lt;br&gt;&lt;br&gt;github url:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://github.com/mwmitchell/solr/tree/master&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/mwmitchell/solr/tree/master&lt;/a&gt;&lt;br&gt;&lt;br&gt;Matt
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/solr-ruby-code-update-tp21047182p21207853.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21055249</id>
	<title>Re: solr ruby code update</title>
	<published>2008-12-17T07:29:02Z</published>
	<updated>2008-12-17T07:29:02Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">&lt;br&gt;On Dec 17, 2008, at 8:39 AM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt; The result object now has methods that WillPaginate can hook into, &amp;nbsp;
&lt;br&gt;&amp;gt; namely:
&lt;br&gt;&amp;gt; current_page, total_pages, next_page and previous_page. With those &amp;nbsp;
&lt;br&gt;&amp;gt; methods,
&lt;br&gt;&amp;gt; the will_paginate view helper can create the pagination view widget.
&lt;br&gt;&lt;br&gt;Gotcha, so WillPaginate makes it nicer to generate paging controls, &amp;nbsp;
&lt;br&gt;but isn't itself cursoring through Solr. &amp;nbsp;it provides parameters that &amp;nbsp;
&lt;br&gt;are used elsewhere in another action. &amp;nbsp;Got it (I think).
&lt;br&gt;&lt;br&gt;I was thinking WillPaginate was maybe doing something like &amp;nbsp;
&lt;br&gt;Solr::Importer::SolrSource - but I was confused.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;lt;%= will_paginate(@docs) %&amp;gt;
&lt;br&gt;&lt;br&gt;Nah, I think @response is better now that I think about it. &amp;nbsp;You'll &amp;nbsp;
&lt;br&gt;want the current start/rows back from Solr in the response. &amp;nbsp;@docs &amp;nbsp;
&lt;br&gt;won't give you that, right?
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/solr-ruby-code-update-tp21047182p21055249.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21053271</id>
	<title>Re: solr ruby code update</title>
	<published>2008-12-17T05:39:48Z</published>
	<updated>2008-12-17T05:39:48Z</updated>
	<author>
		<name>goodieboy</name>
	</author>
	<content type="html">Erik,
&lt;br&gt;&lt;br&gt;I'm glad you like it so far, definitely some things to work out still but
&lt;br&gt;I'm feeling pretty happy with it.
&lt;br&gt;&lt;br&gt;The pagination is real, not just a huge doc set using array cursors. The
&lt;br&gt;library is converting :page and :per_page to &amp;quot;rows&amp;quot; and &amp;quot;start. You use it
&lt;br&gt;by first querying, using the :page and :per_page params like:
&lt;br&gt;&lt;br&gt;result = solr.query(:page=&amp;gt;1, :per_page=&amp;gt;10, :q=&amp;gt;'*:*')
&lt;br&gt;# or &amp;quot;search&amp;quot;
&lt;br&gt;result = solr.search('ipod', :page=&amp;gt;1, :per_page=&amp;gt;10)
&lt;br&gt;&lt;br&gt;The result object now has methods that WillPaginate can hook into, namely:
&lt;br&gt;current_page, total_pages, next_page and previous_page. With those methods,
&lt;br&gt;the will_paginate view helper can create the pagination view widget. Of
&lt;br&gt;course, the :page param would probably be dynamic; in Rails/Merb --
&lt;br&gt;params[:page].
&lt;br&gt;&lt;br&gt;But you bring up a good point about where the pagination should be
&lt;br&gt;&amp;quot;happening&amp;quot;. Maybe instead of paginating the top-level &amp;quot;result&amp;quot;, it'd be
&lt;br&gt;more intuitive to do it on just a document set like:
&lt;br&gt;&lt;br&gt;result = solr.query(:page=&amp;gt;1, :per_page=&amp;gt;10, :q=&amp;gt;'*:*')
&lt;br&gt;@docs = result.documents
&lt;br&gt;&lt;br&gt;&amp;lt;%= will_paginate(@docs) %&amp;gt;
&lt;br&gt;&lt;br&gt;What do you think?
&lt;br&gt;&lt;br&gt;Thanks for having a look and please do play with it when you get a chance!
&lt;br&gt;&lt;br&gt;Matt
&lt;br&gt;&lt;br&gt;On Wed, Dec 17, 2008 at 12:12 AM, Erik Hatcher
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=21053271&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;&amp;gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; tell us more about the willpaginate stuff. &amp;nbsp; &amp;nbsp;your example:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;lt;%= will_paginate(@response) %&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; does this paginate a live cursor through solr by requesting start/row
&lt;br&gt;&amp;gt; windows? &amp;nbsp;or is it paginating through the docs returned to the client?
&lt;br&gt;&amp;gt; shouldn't you paginate an @query or an @request than the response?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Erik
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Dec 16, 2008, at 11:52 PM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;I've been re-writing/factoring the solr ruby gem -- and the source code
&lt;br&gt;&amp;gt;&amp;gt; can
&lt;br&gt;&amp;gt;&amp;gt; be found here:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://github.com/mwmitchell/solr/tree/master&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/mwmitchell/solr/tree/master&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The current version is 0.5.1 and can be installed by running:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; gem sources -a &lt;a href=&quot;http://gems.github.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gems.github.com&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; sudo gem install mwmitchell-solr
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; More docs coming, but for the nitty gritty, have a look at some of the
&lt;br&gt;&amp;gt;&amp;gt; tests
&lt;br&gt;&amp;gt;&amp;gt; if needed.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; If you use solr-ruby at all, please have a look. I would love to hear from
&lt;br&gt;&amp;gt;&amp;gt; some of the ruby folks out there!
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Matt
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/solr-ruby-code-update-tp21047182p21053271.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21047446</id>
	<title>Re: solr ruby code update</title>
	<published>2008-12-16T21:25:39Z</published>
	<updated>2008-12-16T21:25:39Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">one concept i think we can remove from next gen solr-ruby's.... &amp;nbsp;
&lt;br&gt;autocommit. &amp;nbsp;the solr side can handle that configuration, and it's &amp;nbsp;
&lt;br&gt;often not really even a good idea to commit until your job is done, as &amp;nbsp;
&lt;br&gt;we now have rollback features and solr really should be able to handle &amp;nbsp;
&lt;br&gt;lots of uncommitted docs.
&lt;br&gt;&lt;br&gt;thoughts? &amp;nbsp; maybe i'm wrong and having a client api sending commits &amp;nbsp;
&lt;br&gt;periodically in a big batch is warranted.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Dec 16, 2008, at 11:52 PM, Matt Mitchell wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I've been re-writing/factoring the solr ruby gem -- and the source &amp;nbsp;
&lt;br&gt;&amp;gt; code can
&lt;br&gt;&amp;gt; be found here:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://github.com/mwmitchell/solr/tree/master&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/mwmitchell/solr/tree/master&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The current version is 0.5.1 and can be installed by running:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; gem sources -a &lt;a href=&quot;http://gems.github.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gems.github.com&lt;/a&gt;&lt;br&gt;&amp;gt; sudo gem install mwmitchell-solr
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; More docs coming, but for the nitty gritty, have a look at some of &amp;nbsp;
&lt;br&gt;&amp;gt; the tests
&lt;br&gt;&amp;gt; if needed.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If you use solr-ruby at all, please have a look. I would love to &amp;nbsp;
&lt;br&gt;&amp;gt; hear from
&lt;br&gt;&amp;gt; some of the ruby folks out there!
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Matt
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/solr-ruby-code-update-tp21047182p21047446.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21047343</id>
	<title>Re: solr ruby code update</title>
	<published>2008-12-16T21:12:08Z</published>
	<updated>2008-12-16T21:12:08Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">tell us more about the willpaginate stuff. &amp;nbsp; &amp;nbsp;your example:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;%= will_paginate(@response) %&amp;gt;
&lt;br&gt;&lt;br&gt;does this paginate a live cursor through solr by requesting start/row &amp;nbsp;
&lt;br&gt;windows? &amp;nbsp;or is it paginating through the docs returned to the &amp;nbsp;
&lt;br&gt;client? &amp;nbsp; shouldn't you paginate an @query or an @request than the &amp;nbsp;
&lt;br&gt;response?
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Dec 16, 2008, at 11:52 PM, Matt Mitchell wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I've been re-writing/factoring the solr ruby gem -- and the source &amp;nbsp;
&lt;br&gt;&amp;gt; code can
&lt;br&gt;&amp;gt; be found here:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://github.com/mwmitchell/solr/tree/master&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/mwmitchell/solr/tree/master&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The current version is 0.5.1 and can be installed by running:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; gem sources -a &lt;a href=&quot;http://gems.github.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gems.github.com&lt;/a&gt;&lt;br&gt;&amp;gt; sudo gem install mwmitchell-solr
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; More docs coming, but for the nitty gritty, have a look at some of &amp;nbsp;
&lt;br&gt;&amp;gt; the tests
&lt;br&gt;&amp;gt; if needed.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If you use solr-ruby at all, please have a look. I would love to &amp;nbsp;
&lt;br&gt;&amp;gt; hear from
&lt;br&gt;&amp;gt; some of the ruby folks out there!
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Matt
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/solr-ruby-code-update-tp21047182p21047343.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21047321</id>
	<title>Re: solr ruby code update</title>
	<published>2008-12-16T21:09:35Z</published>
	<updated>2008-12-16T21:09:35Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">wow, at first glance this looks spectacular, Matt! &amp;nbsp; one of these &amp;nbsp;
&lt;br&gt;dreamy days i'll carve out time to really play... maybe sooner if you &amp;nbsp;
&lt;br&gt;keep dazzling us like this.
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Dec 16, 2008, at 11:52 PM, Matt Mitchell wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I've been re-writing/factoring the solr ruby gem -- and the source &amp;nbsp;
&lt;br&gt;&amp;gt; code can
&lt;br&gt;&amp;gt; be found here:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://github.com/mwmitchell/solr/tree/master&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/mwmitchell/solr/tree/master&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The current version is 0.5.1 and can be installed by running:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; gem sources -a &lt;a href=&quot;http://gems.github.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gems.github.com&lt;/a&gt;&lt;br&gt;&amp;gt; sudo gem install mwmitchell-solr
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; More docs coming, but for the nitty gritty, have a look at some of &amp;nbsp;
&lt;br&gt;&amp;gt; the tests
&lt;br&gt;&amp;gt; if needed.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If you use solr-ruby at all, please have a look. I would love to &amp;nbsp;
&lt;br&gt;&amp;gt; hear from
&lt;br&gt;&amp;gt; some of the ruby folks out there!
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Matt
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/solr-ruby-code-update-tp21047182p21047321.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21047182</id>
	<title>solr ruby code update</title>
	<published>2008-12-16T20:52:59Z</published>
	<updated>2008-12-16T20:52:59Z</updated>
	<author>
		<name>goodieboy</name>
	</author>
	<content type="html">I've been re-writing/factoring the solr ruby gem -- and the source code can
&lt;br&gt;be found here:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://github.com/mwmitchell/solr/tree/master&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/mwmitchell/solr/tree/master&lt;/a&gt;&lt;br&gt;&lt;br&gt;The current version is 0.5.1 and can be installed by running:
&lt;br&gt;&lt;br&gt;gem sources -a &lt;a href=&quot;http://gems.github.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gems.github.com&lt;/a&gt;&lt;br&gt;sudo gem install mwmitchell-solr
&lt;br&gt;&lt;br&gt;More docs coming, but for the nitty gritty, have a look at some of the tests
&lt;br&gt;if needed.
&lt;br&gt;&lt;br&gt;If you use solr-ruby at all, please have a look. I would love to hear from
&lt;br&gt;some of the ruby folks out there!
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;&lt;br&gt;Matt
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/solr-ruby-code-update-tp21047182p21047182.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20816624</id>
	<title>Re: quick jruby + solr benchmarks</title>
	<published>2008-12-03T08:41:52Z</published>
	<updated>2008-12-03T08:41:52Z</updated>
	<author>
		<name>Jamie Orchard-Hays-3</name>
	</author>
	<content type="html">The other night I spent a few hours messing with EventMachine, Curb &amp;nbsp;
&lt;br&gt;(libcurl ruby lib) and RFuzz. EventMachine's HTTP2 is just missing &amp;nbsp;
&lt;br&gt;some of the POST features I need, and I didn't want to figure out how &amp;nbsp;
&lt;br&gt;to build what I needed from EventMachine's low-level features. RFuzz &amp;nbsp;
&lt;br&gt;works, but then would crap out completely or go from well under a &amp;nbsp;
&lt;br&gt;second to 20+ seconds to complete a request. I suspect it's not &amp;nbsp;
&lt;br&gt;designed for the large POSTs I need. Curb (which is used with &amp;quot;require &amp;nbsp;
&lt;br&gt;'curl'&amp;quot;--why do some gem authors not name the gem and the library the &amp;nbsp;
&lt;br&gt;same dang thing???) works great. It's not any faster than net/http, &amp;nbsp;
&lt;br&gt;but judging from those tests, I should be saving a lot of CPU.
&lt;br&gt;&lt;br&gt;Jamie
&lt;br&gt;&lt;br&gt;On Dec 3, 2008, at 10:05 AM, Matt Mitchell wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Thanks Jamie. That's kind of shocking actually. What client library &amp;nbsp;
&lt;br&gt;&amp;gt; do you
&lt;br&gt;&amp;gt; use?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Sun, Nov 30, 2008 at 1:38 PM, Jamie Orchard-Hays &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20816624&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jamie@...&lt;/a&gt; 
&lt;br&gt;&amp;gt; &amp;gt;wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Here's something to note when using net/http in Ruby (which open-uri
&lt;br&gt;&amp;gt;&amp;gt; wraps). Even though it's about as fast as other options, it uses a &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; huge cpu
&lt;br&gt;&amp;gt;&amp;gt; load when compared to others (on ruby 1.8.6):
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://apocryph.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://apocryph.org/&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; more_indepth_analysis_ruby_http_client_performance
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Nov 26, 2008, at 12:06 PM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Interesting. My main goal was to get a feel for how jruby and the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; direct/embedded stuff compared to mri ruby and straight up http. But
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; obviously, the data and these tests are not realistic at all. &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Thanks for
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; your feedback guys.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Matt
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On Wed, Nov 26, 2008 at 10:34 AM, Erik Hatcher
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20816624&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;&amp;gt;wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I just had a brief conversation with Yonik on this to get his way &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; more
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; expert opinion, and it really boils down to this in this particular
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; test...
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the query itself is incredibly fast (1 millisecond or less QTime &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Solr
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; reports) since there are no documents. &amp;nbsp;So what these differences &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; are
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; showing is merely the difference between HTTP and a method call - &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; with
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; nothing else (of note) going on.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; In a realer world scenario, the HTTP overhead makes less &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; difference as
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; work being done in the query/faceting overshadows the communication
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; overhead.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; There's lies, damned lies, and benchmarks :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On Nov 26, 2008, at 9:54 AM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Yeah I overlooked all of that. Thanks Erik. So could a better &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; query test
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; be
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; an incremental one based on id like:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 100.times do |id|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; q = &amp;quot;id:#{id}&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; # query request here...
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Would you happen to know why the solr home and data dir never &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; really
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; change?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Anytime I use commons http or embedded, a &amp;quot;solr&amp;quot; directory is &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; created in
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; same directory as my script. Even though I'm setting the home &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and data
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; dir
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; in my code?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Matt
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On Wed, Nov 26, 2008 at 3:28 AM, Erik Hatcher &amp;lt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20816624&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; just a couple of quick code comments...
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On Nov 25, 2008, at 6:04 PM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; # EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; def embedded(solr_home)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @embedded ||= (
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import org.apache.solr.core.CoreContainer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import org.apache.solr.core.CoreDescriptor
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import org.apache.solr.client.solrj.SolrQuery
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; core_name = 'main-core'
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; container = CoreContainer.new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; descriptor = CoreDescriptor.new(container, core_name, solr_home)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; core = container.create(descriptor)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; You'll want to close that core, otherwise the JVM doesn't &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; exit. &amp;nbsp;I
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; changed
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; this to:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @core = ....
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; container.register(core_name, core, false)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and used @core there.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; query = {'qt' =&amp;gt; 'standard', 'q'=&amp;gt;'ipod', 'facet.field' =&amp;gt; 'cat'}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Note that faceting is not enabled unless there is also a &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;facet=on
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; params = hash_to_params(query)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; max = 1000
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Benchmark.bm do |x|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; x.report 'http commons' do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; max.times do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; http_commons.query(params)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; x.report 'embedded' do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; max.times do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; embedded(solr_home).query(params)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; And I added an:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @core.close
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; at the end.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; Erik
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/quick-jruby-%2B-solr-benchmarks-tp20691466p20816624.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20814682</id>
	<title>Re: quick jruby + solr benchmarks</title>
	<published>2008-12-03T07:05:18Z</published>
	<updated>2008-12-03T07:05:18Z</updated>
	<author>
		<name>goodieboy</name>
	</author>
	<content type="html">Thanks Jamie. That's kind of shocking actually. What client library do you
&lt;br&gt;use?
&lt;br&gt;&lt;br&gt;On Sun, Nov 30, 2008 at 1:38 PM, Jamie Orchard-Hays &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20814682&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jamie@...&lt;/a&gt;&amp;gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Here's something to note when using net/http in Ruby (which open-uri
&lt;br&gt;&amp;gt; wraps). Even though it's about as fast as other options, it uses a huge cpu
&lt;br&gt;&amp;gt; load when compared to others (on ruby 1.8.6):
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://apocryph.org/more_indepth_analysis_ruby_http_client_performance&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://apocryph.org/more_indepth_analysis_ruby_http_client_performance&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Nov 26, 2008, at 12:06 PM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;Interesting. My main goal was to get a feel for how jruby and the
&lt;br&gt;&amp;gt;&amp;gt; direct/embedded stuff compared to mri ruby and straight up http. But
&lt;br&gt;&amp;gt;&amp;gt; obviously, the data and these tests are not realistic at all. Thanks for
&lt;br&gt;&amp;gt;&amp;gt; your feedback guys.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Matt
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Wed, Nov 26, 2008 at 10:34 AM, Erik Hatcher
&lt;br&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20814682&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;&amp;gt;wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;I just had a brief conversation with Yonik on this to get his way more
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; expert opinion, and it really boils down to this in this particular
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; test...
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; the query itself is incredibly fast (1 millisecond or less QTime Solr
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; reports) since there are no documents. &amp;nbsp;So what these differences are
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; showing is merely the difference between HTTP and a method call - with
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; nothing else (of note) going on.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; In a realer world scenario, the HTTP overhead makes less difference as
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; work being done in the query/faceting overshadows the communication
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; overhead.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; There's lies, damned lies, and benchmarks :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;Erik
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On Nov 26, 2008, at 9:54 AM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Yeah I overlooked all of that. Thanks Erik. So could a better query test
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; be
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; an incremental one based on id like:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 100.times do |id|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; q = &amp;quot;id:#{id}&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; # query request here...
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Would you happen to know why the solr home and data dir never really
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; change?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Anytime I use commons http or embedded, a &amp;quot;solr&amp;quot; directory is created in
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; same directory as my script. Even though I'm setting the home and data
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; dir
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; in my code?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Matt
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On Wed, Nov 26, 2008 at 3:28 AM, Erik Hatcher &amp;lt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20814682&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; just a couple of quick code comments...
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On Nov 25, 2008, at 6:04 PM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; # EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; def embedded(solr_home)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @embedded ||= (
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import org.apache.solr.core.CoreContainer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import org.apache.solr.core.CoreDescriptor
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import org.apache.solr.client.solrj.SolrQuery
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; core_name = 'main-core'
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; container = CoreContainer.new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; descriptor = CoreDescriptor.new(container, core_name, solr_home)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; core = container.create(descriptor)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;You'll want to close that core, otherwise the JVM doesn't exit. &amp;nbsp;I
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; changed
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; this to:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @core = ....
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; container.register(core_name, core, false)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;and used @core there.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; query = {'qt' =&amp;gt; 'standard', 'q'=&amp;gt;'ipod', 'facet.field' =&amp;gt; 'cat'}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;Note that faceting is not enabled unless there is also a &amp;facet=on
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; params = hash_to_params(query)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; max = 1000
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Benchmark.bm do |x|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; x.report 'http commons' do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; max.times do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;http_commons.query(params)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; x.report 'embedded' do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; max.times do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;embedded(solr_home).query(params)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;And I added an:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @core.close
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; at the end.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;Erik
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/quick-jruby-%2B-solr-benchmarks-tp20691466p20814682.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20786129</id>
	<title>How to add a Icon using RubyQt</title>
	<published>2008-12-01T20:53:07Z</published>
	<updated>2008-12-01T20:53:07Z</updated>
	<author>
		<name>safewraju</name>
	</author>
	<content type="html">Hi to all,
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;I am developing an application using RubyQt. In that i need to keep image icons. I want to know how to do, can any one help me regarding this. I am waiting for your replys.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;&lt;br&gt;Narasimha Raju. Naidu</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/How-to-add-a-Icon-using-RubyQt-tp20786129p20786129.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20760644</id>
	<title>Re: quick jruby + solr benchmarks</title>
	<published>2008-11-30T10:38:14Z</published>
	<updated>2008-11-30T10:38:14Z</updated>
	<author>
		<name>Jamie Orchard-Hays-3</name>
	</author>
	<content type="html">Here's something to note when using net/http in Ruby (which open-uri &amp;nbsp;
&lt;br&gt;wraps). Even though it's about as fast as other options, it uses a &amp;nbsp;
&lt;br&gt;huge cpu load when compared to others (on ruby 1.8.6):
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://apocryph.org/more_indepth_analysis_ruby_http_client_performance&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://apocryph.org/more_indepth_analysis_ruby_http_client_performance&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On Nov 26, 2008, at 12:06 PM, Matt Mitchell wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Interesting. My main goal was to get a feel for how jruby and the
&lt;br&gt;&amp;gt; direct/embedded stuff compared to mri ruby and straight up http. But
&lt;br&gt;&amp;gt; obviously, the data and these tests are not realistic at all. Thanks &amp;nbsp;
&lt;br&gt;&amp;gt; for
&lt;br&gt;&amp;gt; your feedback guys.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Matt
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Wed, Nov 26, 2008 at 10:34 AM, Erik Hatcher
&lt;br&gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20760644&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;&amp;gt;wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I just had a brief conversation with Yonik on this to get his way &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; more
&lt;br&gt;&amp;gt;&amp;gt; expert opinion, and it really boils down to this in this particular &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; test...
&lt;br&gt;&amp;gt;&amp;gt; the query itself is incredibly fast (1 millisecond or less QTime Solr
&lt;br&gt;&amp;gt;&amp;gt; reports) since there are no documents. &amp;nbsp;So what these differences are
&lt;br&gt;&amp;gt;&amp;gt; showing is merely the difference between HTTP and a method call - &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; with
&lt;br&gt;&amp;gt;&amp;gt; nothing else (of note) going on.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; In a realer world scenario, the HTTP overhead makes less difference &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; as the
&lt;br&gt;&amp;gt;&amp;gt; work being done in the query/faceting overshadows the communication
&lt;br&gt;&amp;gt;&amp;gt; overhead.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; There's lies, damned lies, and benchmarks :)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Nov 26, 2008, at 9:54 AM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Yeah I overlooked all of that. Thanks Erik. So could a better query &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; test
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; be
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; an incremental one based on id like:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 100.times do |id|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; q = &amp;quot;id:#{id}&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; # query request here...
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; ?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Would you happen to know why the solr home and data dir never really
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; change?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Anytime I use commons http or embedded, a &amp;quot;solr&amp;quot; directory is &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; created in
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; same directory as my script. Even though I'm setting the home and &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; data dir
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; in my code?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Matt
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On Wed, Nov 26, 2008 at 3:28 AM, Erik Hatcher &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20760644&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; just a couple of quick code comments...
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On Nov 25, 2008, at 6:04 PM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; # EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; def embedded(solr_home)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @embedded ||= (
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import org.apache.solr.core.CoreContainer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import org.apache.solr.core.CoreDescriptor
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import org.apache.solr.client.solrj.SolrQuery
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; core_name = 'main-core'
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; container = CoreContainer.new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; descriptor = CoreDescriptor.new(container, core_name, solr_home)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; core = container.create(descriptor)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; You'll want to close that core, otherwise the JVM doesn't exit. &amp;nbsp;I
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; changed
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; this to:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @core = ....
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; container.register(core_name, core, false)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and used @core there.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; query = {'qt' =&amp;gt; 'standard', 'q'=&amp;gt;'ipod', 'facet.field' =&amp;gt; 'cat'}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Note that faceting is not enabled unless there is also a &amp;facet=on
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; params = hash_to_params(query)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; max = 1000
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Benchmark.bm do |x|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; x.report 'http commons' do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; max.times do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;http_commons.query(params)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; x.report 'embedded' do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; max.times do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;embedded(solr_home).query(params)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; And I added an:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @core.close
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; at the end.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/quick-jruby-%2B-solr-benchmarks-tp20691466p20760644.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20705032</id>
	<title>Re: quick jruby + solr benchmarks</title>
	<published>2008-11-26T09:06:57Z</published>
	<updated>2008-11-26T09:06:57Z</updated>
	<author>
		<name>goodieboy</name>
	</author>
	<content type="html">Interesting. My main goal was to get a feel for how jruby and the
&lt;br&gt;direct/embedded stuff compared to mri ruby and straight up http. But
&lt;br&gt;obviously, the data and these tests are not realistic at all. Thanks for
&lt;br&gt;your feedback guys.
&lt;br&gt;&lt;br&gt;Matt
&lt;br&gt;&lt;br&gt;On Wed, Nov 26, 2008 at 10:34 AM, Erik Hatcher
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20705032&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;&amp;gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I just had a brief conversation with Yonik on this to get his way more
&lt;br&gt;&amp;gt; expert opinion, and it really boils down to this in this particular test...
&lt;br&gt;&amp;gt; the query itself is incredibly fast (1 millisecond or less QTime Solr
&lt;br&gt;&amp;gt; reports) since there are no documents. &amp;nbsp;So what these differences are
&lt;br&gt;&amp;gt; showing is merely the difference between HTTP and a method call - with
&lt;br&gt;&amp;gt; nothing else (of note) going on.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In a realer world scenario, the HTTP overhead makes less difference as the
&lt;br&gt;&amp;gt; work being done in the query/faceting overshadows the communication
&lt;br&gt;&amp;gt; overhead.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; There's lies, damned lies, and benchmarks :)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Erik
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Nov 26, 2008, at 9:54 AM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;Yeah I overlooked all of that. Thanks Erik. So could a better query test
&lt;br&gt;&amp;gt;&amp;gt; be
&lt;br&gt;&amp;gt;&amp;gt; an incremental one based on id like:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 100.times do |id|
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;q = &amp;quot;id:#{id}&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;# query request here...
&lt;br&gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; ?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Would you happen to know why the solr home and data dir never really
&lt;br&gt;&amp;gt;&amp;gt; change?
&lt;br&gt;&amp;gt;&amp;gt; Anytime I use commons http or embedded, a &amp;quot;solr&amp;quot; directory is created in
&lt;br&gt;&amp;gt;&amp;gt; the
&lt;br&gt;&amp;gt;&amp;gt; same directory as my script. Even though I'm setting the home and data dir
&lt;br&gt;&amp;gt;&amp;gt; in my code?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Matt
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Wed, Nov 26, 2008 at 3:28 AM, Erik Hatcher &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20705032&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;just a couple of quick code comments...
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On Nov 25, 2008, at 6:04 PM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;# EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; def embedded(solr_home)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @embedded ||= (
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.solr.core.CoreContainer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.solr.core.CoreDescriptor
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.solr.client.solrj.SolrQuery
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;core_name = 'main-core'
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;container = CoreContainer.new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;descriptor = CoreDescriptor.new(container, core_name, solr_home)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;core = container.create(descriptor)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; You'll want to close that core, otherwise the JVM doesn't exit. &amp;nbsp;I
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; changed
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; this to:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; @core = ....
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;container.register(core_name, core, false)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; and used @core there.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; query = {'qt' =&amp;gt; 'standard', 'q'=&amp;gt;'ipod', 'facet.field' =&amp;gt; 'cat'}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Note that faceting is not enabled unless there is also a &amp;facet=on
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; params = hash_to_params(query)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; max = 1000
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Benchmark.bm do |x|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; x.report 'http commons' do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;max.times do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; http_commons.query(params)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; x.report 'embedded' do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;max.times do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; embedded(solr_home).query(params)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; And I added an:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; @core.close
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; at the end.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;Erik
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/quick-jruby-%2B-solr-benchmarks-tp20691466p20705032.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20703283</id>
	<title>Re: quick jruby + solr benchmarks</title>
	<published>2008-11-26T07:34:44Z</published>
	<updated>2008-11-26T07:34:44Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">I just had a brief conversation with Yonik on this to get his way more &amp;nbsp;
&lt;br&gt;expert opinion, and it really boils down to this in this particular &amp;nbsp;
&lt;br&gt;test... the query itself is incredibly fast (1 millisecond or less &amp;nbsp;
&lt;br&gt;QTime Solr reports) since there are no documents. &amp;nbsp;So what these &amp;nbsp;
&lt;br&gt;differences are showing is merely the difference between HTTP and a &amp;nbsp;
&lt;br&gt;method call - with nothing else (of note) going on.
&lt;br&gt;&lt;br&gt;In a realer world scenario, the HTTP overhead makes less difference as &amp;nbsp;
&lt;br&gt;the work being done in the query/faceting overshadows the &amp;nbsp;
&lt;br&gt;communication overhead.
&lt;br&gt;&lt;br&gt;There's lies, damned lies, and benchmarks :)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On Nov 26, 2008, at 9:54 AM, Matt Mitchell wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Yeah I overlooked all of that. Thanks Erik. So could a better query &amp;nbsp;
&lt;br&gt;&amp;gt; test be
&lt;br&gt;&amp;gt; an incremental one based on id like:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 100.times do |id|
&lt;br&gt;&amp;gt; &amp;nbsp;q = &amp;quot;id:#{id}&amp;quot;
&lt;br&gt;&amp;gt; &amp;nbsp;# query request here...
&lt;br&gt;&amp;gt; end
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Would you happen to know why the solr home and data dir never really &amp;nbsp;
&lt;br&gt;&amp;gt; change?
&lt;br&gt;&amp;gt; Anytime I use commons http or embedded, a &amp;quot;solr&amp;quot; directory is &amp;nbsp;
&lt;br&gt;&amp;gt; created in the
&lt;br&gt;&amp;gt; same directory as my script. Even though I'm setting the home and &amp;nbsp;
&lt;br&gt;&amp;gt; data dir
&lt;br&gt;&amp;gt; in my code?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Matt
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Wed, Nov 26, 2008 at 3:28 AM, Erik Hatcher &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20703283&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt; 
&lt;br&gt;&amp;gt; &amp;gt;wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; just a couple of quick code comments...
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Nov 25, 2008, at 6:04 PM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; # EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; def embedded(solr_home)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; @embedded ||= (
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.solr.core.CoreContainer
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.solr.core.CoreDescriptor
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.solr.client.solrj.SolrQuery
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;core_name = 'main-core'
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;container = CoreContainer.new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;descriptor = CoreDescriptor.new(container, core_name, solr_home)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;core = container.create(descriptor)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; You'll want to close that core, otherwise the JVM doesn't exit. &amp;nbsp;I &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; changed
&lt;br&gt;&amp;gt;&amp;gt; this to:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; @core = ....
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; container.register(core_name, core, false)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; and used @core there.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; query = {'qt' =&amp;gt; 'standard', 'q'=&amp;gt;'ipod', 'facet.field' =&amp;gt; 'cat'}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Note that faceting is not enabled unless there is also a &amp;facet=on
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; params = hash_to_params(query)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; max = 1000
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Benchmark.bm do |x|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; x.report 'http commons' do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;max.times do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;http_commons.query(params)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; x.report 'embedded' do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;max.times do
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;embedded(solr_home).query(params)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; And I added an:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; @core.close
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; at the end.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/quick-jruby-%2B-solr-benchmarks-tp20691466p20703283.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20702812</id>
	<title>Re: quick jruby + solr benchmarks</title>
	<published>2008-11-26T07:10:15Z</published>
	<updated>2008-11-26T07:10:15Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">On Nov 26, 2008, at 9:54 AM, Matt Mitchell wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Yeah I overlooked all of that. Thanks Erik. So could a better query &amp;nbsp;
&lt;br&gt;&amp;gt; test be
&lt;br&gt;&amp;gt; an incremental one based on id like:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 100.times do |id|
&lt;br&gt;&amp;gt; &amp;nbsp;q = &amp;quot;id:#{id}&amp;quot;
&lt;br&gt;&amp;gt; &amp;nbsp;# query request here...
&lt;br&gt;&amp;gt; end
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ?
&lt;/div&gt;&lt;br&gt;Testing is an art form. &amp;nbsp;Depends on what you are testing. &amp;nbsp;Issuing &amp;nbsp;
&lt;br&gt;entirely unique queries is not very real-world either, but at least it &amp;nbsp;
&lt;br&gt;will cause the bypassing of query and HTTP caching shortcuts.
&lt;br&gt;&lt;br&gt;Many organizations mine their query logs to get a set of &amp;nbsp;
&lt;br&gt;representative queries to test with, for example.
&lt;br&gt;&lt;br&gt;I think your point is proven - EmbeddedSolrServer itself is faster &amp;nbsp;
&lt;br&gt;than CommonsHttpSolrServer. &amp;nbsp;But would you deploy that way? &amp;nbsp;Is your &amp;nbsp;
&lt;br&gt;front-end going to be merged with Solr itself? &amp;nbsp;That may or may not be &amp;nbsp;
&lt;br&gt;very viable, depending on the resources the front-end and Solr needs &amp;nbsp;
&lt;br&gt;and how much system resources you have. &amp;nbsp;What about doing load &amp;nbsp;
&lt;br&gt;balancing? &amp;nbsp;You're then stuck with load balancing your front-end in &amp;nbsp;
&lt;br&gt;tandem with Solr itself.
&lt;br&gt;&lt;br&gt;Again, it all boils down to what you're after with the benchmarks. &amp;nbsp; 
&lt;br&gt;And I'm not a benchmarking performance savvy person myself, so I'm not &amp;nbsp;
&lt;br&gt;sure where to take it from here. &amp;nbsp;It's an interesting test, for sure, &amp;nbsp;
&lt;br&gt;and I'd like to have it reviewed by others that really know their &amp;nbsp;
&lt;br&gt;stuff in this realm and with Solr itself that can elaborate on why &amp;nbsp;
&lt;br&gt;there is such a huge difference in speed. &amp;nbsp;Is it just HTTP and &amp;nbsp;
&lt;br&gt;serialize/unserialize overhead? &amp;nbsp;(I tend to doubt that, but don't know)
&lt;br&gt;&lt;br&gt;&amp;gt; Would you happen to know why the solr home and data dir never really &amp;nbsp;
&lt;br&gt;&amp;gt; change?
&lt;br&gt;&amp;gt; Anytime I use commons http or embedded, a &amp;quot;solr&amp;quot; directory is &amp;nbsp;
&lt;br&gt;&amp;gt; created in the
&lt;br&gt;&amp;gt; same directory as my script. Even though I'm setting the home and &amp;nbsp;
&lt;br&gt;&amp;gt; data dir
&lt;br&gt;&amp;gt; in my code?
&lt;br&gt;&lt;br&gt;I don't know at the moment, I'd have to dig deeper.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/quick-jruby-%2B-solr-benchmarks-tp20691466p20702812.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20702571</id>
	<title>Re: quick jruby + solr benchmarks</title>
	<published>2008-11-26T06:54:22Z</published>
	<updated>2008-11-26T06:54:22Z</updated>
	<author>
		<name>goodieboy</name>
	</author>
	<content type="html">Yeah I overlooked all of that. Thanks Erik. So could a better query test be
&lt;br&gt;an incremental one based on id like:
&lt;br&gt;&lt;br&gt;100.times do |id|
&lt;br&gt;&amp;nbsp; q = &amp;quot;id:#{id}&amp;quot;
&lt;br&gt;&amp;nbsp; # query request here...
&lt;br&gt;end
&lt;br&gt;&lt;br&gt;?
&lt;br&gt;&lt;br&gt;Would you happen to know why the solr home and data dir never really change?
&lt;br&gt;Anytime I use commons http or embedded, a &amp;quot;solr&amp;quot; directory is created in the
&lt;br&gt;same directory as my script. Even though I'm setting the home and data dir
&lt;br&gt;in my code?
&lt;br&gt;&lt;br&gt;Matt
&lt;br&gt;&lt;br&gt;On Wed, Nov 26, 2008 at 3:28 AM, Erik Hatcher &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20702571&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;&amp;gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; just a couple of quick code comments...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Nov 25, 2008, at 6:04 PM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; # EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt; def embedded(solr_home)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;@embedded ||= (
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; import org.apache.solr.core.CoreContainer
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; import org.apache.solr.core.CoreDescriptor
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; import org.apache.solr.client.solrj.SolrQuery
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; core_name = 'main-core'
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; container = CoreContainer.new
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; descriptor = CoreDescriptor.new(container, core_name, solr_home)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; core = container.create(descriptor)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; You'll want to close that core, otherwise the JVM doesn't exit. &amp;nbsp;I changed
&lt;br&gt;&amp;gt; this to:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;@core = ....
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;container.register(core_name, core, false)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; and used @core there.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;query = {'qt' =&amp;gt; 'standard', 'q'=&amp;gt;'ipod', 'facet.field' =&amp;gt; 'cat'}
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Note that faceting is not enabled unless there is also a &amp;facet=on
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;params = hash_to_params(query)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; max = 1000
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Benchmark.bm do |x|
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;x.report 'http commons' do
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; max.times do
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; http_commons.query(params)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; end
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;x.report 'embedded' do
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; max.times do
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; embedded(solr_home).query(params)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; end
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; And I added an:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;@core.close
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; at the end.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Erik
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/quick-jruby-%2B-solr-benchmarks-tp20691466p20702571.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20696641</id>
	<title>Re: quick jruby + solr benchmarks</title>
	<published>2008-11-26T00:28:33Z</published>
	<updated>2008-11-26T00:28:33Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">just a couple of quick code comments...
&lt;br&gt;&lt;br&gt;On Nov 25, 2008, at 6:04 PM, Matt Mitchell wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; # EmbeddedSolrServer
&lt;br&gt;&amp;gt; def embedded(solr_home)
&lt;br&gt;&amp;gt; &amp;nbsp;@embedded ||= (
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;import org.apache.solr.core.CoreContainer
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;import org.apache.solr.core.CoreDescriptor
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;import org.apache.solr.client.solrj.SolrQuery
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;core_name = 'main-core'
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;container = CoreContainer.new
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;descriptor = CoreDescriptor.new(container, core_name, solr_home)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;core = container.create(descriptor)
&lt;/div&gt;&lt;br&gt;You'll want to close that core, otherwise the JVM doesn't exit. &amp;nbsp;I &amp;nbsp;
&lt;br&gt;changed this to:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;@core = ....
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;container.register(core_name, core, false)
&lt;br&gt;&lt;br&gt;and used @core there.
&lt;br&gt;&lt;br&gt;&amp;gt; query = {'qt' =&amp;gt; 'standard', 'q'=&amp;gt;'ipod', 'facet.field' =&amp;gt; 'cat'}
&lt;br&gt;&lt;br&gt;Note that faceting is not enabled unless there is also a &amp;facet=on
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; params = hash_to_params(query)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; max = 1000
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Benchmark.bm do |x|
&lt;br&gt;&amp;gt; &amp;nbsp;x.report 'http commons' do
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;max.times do
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;http_commons.query(params)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;end
&lt;br&gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt; &amp;nbsp;x.report 'embedded' do
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;max.times do
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;embedded(solr_home).query(params)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;end
&lt;br&gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt; end
&lt;/div&gt;&lt;br&gt;And I added an:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;@core.close
&lt;br&gt;&lt;br&gt;at the end.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/quick-jruby-%2B-solr-benchmarks-tp20691466p20696641.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20696308</id>
	<title>Re: quick jruby + solr benchmarks</title>
	<published>2008-11-25T23:56:37Z</published>
	<updated>2008-11-25T23:56:37Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">&lt;br&gt;On Nov 25, 2008, at 7:13 PM, Jamie Orchard-Hays wrote:
&lt;br&gt;&amp;gt; So about 2x? Not bad. I wonder what running httperf against a simple &amp;nbsp;
&lt;br&gt;&amp;gt; app would show.
&lt;br&gt;&lt;br&gt;Keep in mind these points:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;* Solr's query cache. &amp;nbsp;Repeating a query 1000 times is really only &amp;nbsp;
&lt;br&gt;executing the query one time and pulling the document set the rest of &amp;nbsp;
&lt;br&gt;the time, except...
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;* Solr supports HTTP cache headers. &amp;nbsp;Thus a &amp;quot;smart&amp;quot; HTTP client &amp;nbsp;
&lt;br&gt;that is HTTP cache savvy will get 304's for 999 of those queries &amp;nbsp;
&lt;br&gt;without Solr doing anything but checking the HTTP request headers and &amp;nbsp;
&lt;br&gt;the current state of the index. &amp;nbsp;Note that Matt's benchmark code is &amp;nbsp;
&lt;br&gt;not HTTP cache savvy at the moment (not a flaw per se, just worth &amp;nbsp;
&lt;br&gt;noting).
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/quick-jruby-%2B-solr-benchmarks-tp20691466p20696308.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20694907</id>
	<title>Re: quick jruby + solr benchmarks</title>
	<published>2008-11-25T21:10:54Z</published>
	<updated>2008-11-25T21:10:54Z</updated>
	<author>
		<name>goodieboy</name>
	</author>
	<content type="html">Yeah that type of benchmark would probably be a lot more useful. I'll see if
&lt;br&gt;I can get something like that going. I've never really done benchmarking
&lt;br&gt;before. Any general tips?
&lt;br&gt;&lt;br&gt;matt
&lt;br&gt;&lt;br&gt;On Tue, Nov 25, 2008 at 7:13 PM, Jamie Orchard-Hays &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20694907&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jamie@...&lt;/a&gt;&amp;gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; So about 2x? Not bad. I wonder what running httperf against a simple app
&lt;br&gt;&amp;gt; would show.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Nov 25, 2008, at 6:04 PM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;I'm starting to experiment with benchmarks/jruby + solr and just wanted to
&lt;br&gt;&amp;gt;&amp;gt; get this out there -- getting ready for a week vacation :)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; In my solr-ruby 'refactoring' progress, I'm finding some interesting
&lt;br&gt;&amp;gt;&amp;gt; results
&lt;br&gt;&amp;gt;&amp;gt; and will try to post in the next few weeks.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; This is jruby 1.1.4 and solr 1.3 (empty index) -- using the standard Ruby
&lt;br&gt;&amp;gt;&amp;gt; &amp;quot;Benchmark&amp;quot; library.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The script:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; #
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; require 'java'
&lt;br&gt;&amp;gt;&amp;gt; require 'benchmark'
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; solr_dist_root = File.expand_path(File.join(File.dirname(__FILE__), '..',
&lt;br&gt;&amp;gt;&amp;gt; 'apache-solr-1.3.0'))
&lt;br&gt;&amp;gt;&amp;gt; solr_home = File.join(solr_dist_root, 'example', 'solr')
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; def require_jars(dir)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;jar_pattern = File.join(dir,&amp;quot;**&amp;quot;, &amp;quot;*.jar&amp;quot;)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;jar_files = Dir.glob(jar_pattern)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;jar_files.each {|jar_file| require jar_file}
&lt;br&gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; def hash_to_params(hash_params)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.solr.common.params.ModifiableSolrParams
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;query = ModifiableSolrParams.new
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;query.instance_eval do
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; alias _add add
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; def add(field, values)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; _add(field.to_s, (values.is_a?(Array) ? values :
&lt;br&gt;&amp;gt;&amp;gt; [values]).to_java(:string))
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; end
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;hash_params.each_pair do |k,v|
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; query.add k, v
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;query
&lt;br&gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; require_jars(File.join(solr_dist_root, &amp;quot;lib&amp;quot;))
&lt;br&gt;&amp;gt;&amp;gt; require_jars(File.join(solr_dist_root, &amp;quot;dist&amp;quot;))
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; # HttpCommons
&lt;br&gt;&amp;gt;&amp;gt; def http_commons
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;@http_commons ||= (
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; import org.apache.solr.common.params.MapSolrParams
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; solr = CommonsHttpSolrServer.new(&amp;quot;&lt;a href=&quot;http://localhost:8983/solr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://localhost:8983/solr&lt;/a&gt;&amp;quot;)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;)
&lt;br&gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; # EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt; def embedded(solr_home)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;@embedded ||= (
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; import org.apache.solr.core.CoreContainer
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; import org.apache.solr.core.CoreDescriptor
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; import org.apache.solr.client.solrj.SolrQuery
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; core_name = 'main-core'
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; container = CoreContainer.new
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; descriptor = CoreDescriptor.new(container, core_name, solr_home)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; core = container.create(descriptor)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; container.register(core_name, core, false)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; solr = EmbeddedSolrServer.new(container, core_name)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;)
&lt;br&gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; query = {'qt' =&amp;gt; 'standard', 'q'=&amp;gt;'ipod', 'facet.field' =&amp;gt; 'cat'}
&lt;br&gt;&amp;gt;&amp;gt; params = hash_to_params(query)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; max = 1000
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Benchmark.bm do |x|
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;x.report 'http commons' do
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; max.times do
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; http_commons.query(params)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; end
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;x.report 'embedded' do
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; max.times do
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; embedded(solr_home).query(params)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; end
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt;&amp;gt; end
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; # THE RESULTS
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; # http commons
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; # 4.634000 &amp;nbsp; 0.000000 &amp;nbsp; 4.634000 ( &amp;nbsp;4.633849)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; # 4.454000 &amp;nbsp; 0.000000 &amp;nbsp; 4.454000 ( &amp;nbsp;4.453764)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; # 3.908000 &amp;nbsp; 0.000000 &amp;nbsp; 3.908000 ( &amp;nbsp;3.907367)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; # embedded
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; # 2.152000 &amp;nbsp; 0.000000 &amp;nbsp; 2.152000 ( &amp;nbsp;2.152226)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; # 2.191000 &amp;nbsp; 0.000000 &amp;nbsp; 2.191000 ( &amp;nbsp;2.191359)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; # 2.083000 &amp;nbsp; 0.000000 &amp;nbsp; 2.083000 ( &amp;nbsp;2.082696)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/quick-jruby-%2B-solr-benchmarks-tp20691466p20694907.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20694886</id>
	<title>Re: quick jruby + solr benchmarks</title>
	<published>2008-11-25T21:08:13Z</published>
	<updated>2008-11-25T21:08:13Z</updated>
	<author>
		<name>goodieboy</name>
	</author>
	<content type="html">Looks like jruby + DirectSolrConnection are on top. I'll try to get some
&lt;br&gt;update queries next.
&lt;br&gt;&lt;br&gt;1,000 iterations VS 10,000 iterations
&lt;br&gt;Added Ruby MRI 1.8.6, using open-uri / http
&lt;br&gt;Added jruby using open-uri / http
&lt;br&gt;&lt;br&gt;&amp;quot;Benchmark'&amp;quot; standard lib
&lt;br&gt;solr 1.3
&lt;br&gt;empty index
&lt;br&gt;query = ipod
&lt;br&gt;&lt;br&gt;# jruby + CommonsHttpSolrServer
&lt;br&gt;&amp;nbsp; &amp;nbsp; # user &amp;nbsp; &amp;nbsp; system &amp;nbsp; &amp;nbsp; &amp;nbsp;total &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;real
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 1000 iterations
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 4.335000 &amp;nbsp; 0.000000 &amp;nbsp; 4.335000 ( &amp;nbsp;4.334744)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 4.335000 &amp;nbsp; 0.000000 &amp;nbsp; 4.335000 ( &amp;nbsp;4.334730)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 10000 iterations
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 32.355000 &amp;nbsp; 0.000000 &amp;nbsp;32.355000 ( 32.354999)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 32.303000 &amp;nbsp; 0.000000 &amp;nbsp;32.303000 ( 32.302859)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 32.323000 &amp;nbsp; 0.000000 &amp;nbsp;32.323000 ( 32.323368)
&lt;br&gt;&lt;br&gt;# jruby + EmbeddedSolrServer
&lt;br&gt;&amp;nbsp; &amp;nbsp; # user &amp;nbsp; &amp;nbsp; system &amp;nbsp; &amp;nbsp; &amp;nbsp;total &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;real
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 1000 iterations
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 2.268000 &amp;nbsp; 0.000000 &amp;nbsp; 2.268000 ( &amp;nbsp;2.267976)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 2.357000 &amp;nbsp; 0.000000 &amp;nbsp; 2.357000 ( &amp;nbsp;2.356588)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 10000 iterations
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 10.650000 &amp;nbsp; 0.000000 &amp;nbsp;10.650000 ( 10.649839)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 8.099000 &amp;nbsp; 0.000000 &amp;nbsp; 8.099000 ( &amp;nbsp;8.099088)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 8.119000 &amp;nbsp; 0.000000 &amp;nbsp; 8.119000 ( &amp;nbsp;8.118807)
&lt;br&gt;&lt;br&gt;# jruby + DirectSolrConnection
&lt;br&gt;&amp;nbsp; &amp;nbsp; # user &amp;nbsp; &amp;nbsp; system &amp;nbsp; &amp;nbsp; &amp;nbsp;total &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;real
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 1000 iterations
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 1.593000 &amp;nbsp; 0.000000 &amp;nbsp; 1.593000 ( &amp;nbsp;1.592349)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 1.595000 &amp;nbsp; 0.000000 &amp;nbsp; 1.595000 ( &amp;nbsp;1.594842)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 10000 iterations
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 10.708000 &amp;nbsp; 0.000000 &amp;nbsp;10.708000 ( 10.707790)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 6.952000 &amp;nbsp; 0.000000 &amp;nbsp; 6.952000 ( &amp;nbsp;6.951736)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 7.939000 &amp;nbsp; 0.000000 &amp;nbsp; 7.939000 ( &amp;nbsp;7.939191)
&lt;br&gt;&lt;br&gt;# ruby mri + http / open-uri
&lt;br&gt;&amp;nbsp; &amp;nbsp; # user &amp;nbsp; &amp;nbsp; system &amp;nbsp; &amp;nbsp; &amp;nbsp;total &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;real
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 1000 iterations
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 0.760000 &amp;nbsp; 0.310000 &amp;nbsp; 1.070000 ( &amp;nbsp;1.607703)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 0.730000 &amp;nbsp; 0.300000 &amp;nbsp; 1.030000 ( &amp;nbsp;1.619739)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 0.760000 &amp;nbsp; 0.330000 &amp;nbsp; 1.090000 ( &amp;nbsp;1.907517)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 0.740000 &amp;nbsp; 0.300000 &amp;nbsp; 1.040000 ( &amp;nbsp;1.543832)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 10000 iterations
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 7.300000 &amp;nbsp; 2.970000 &amp;nbsp;10.270000 ( 15.452759)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 7.290000 &amp;nbsp; 2.960000 &amp;nbsp;10.250000 ( 15.585011)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 7.330000 &amp;nbsp; 2.980000 &amp;nbsp;10.310000 ( 15.781377)
&lt;br&gt;&lt;br&gt;# jruby + http / open-uri
&lt;br&gt;&amp;nbsp; &amp;nbsp; # user &amp;nbsp; &amp;nbsp; system &amp;nbsp; &amp;nbsp; &amp;nbsp;total &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;real
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 10000 iterations
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 27.583000 &amp;nbsp; 0.000000 &amp;nbsp;27.583000 ( 27.582765)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 25.620000 &amp;nbsp; 0.000000 &amp;nbsp;25.620000 ( 25.620403)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 25.474000 &amp;nbsp; 0.000000 &amp;nbsp;25.474000 ( 25.473653)
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/quick-jruby-%2B-solr-benchmarks-tp20691466p20694886.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20692389</id>
	<title>Re: quick jruby + solr benchmarks</title>
	<published>2008-11-25T16:13:26Z</published>
	<updated>2008-11-25T16:13:26Z</updated>
	<author>
		<name>Jamie Orchard-Hays-3</name>
	</author>
	<content type="html">So about 2x? Not bad. I wonder what running httperf against a simple &amp;nbsp;
&lt;br&gt;app would show.
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Nov 25, 2008, at 6:04 PM, Matt Mitchell wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I'm starting to experiment with benchmarks/jruby + solr and just &amp;nbsp;
&lt;br&gt;&amp;gt; wanted to
&lt;br&gt;&amp;gt; get this out there -- getting ready for a week vacation :)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In my solr-ruby 'refactoring' progress, I'm finding some interesting &amp;nbsp;
&lt;br&gt;&amp;gt; results
&lt;br&gt;&amp;gt; and will try to post in the next few weeks.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This is jruby 1.1.4 and solr 1.3 (empty index) -- using the standard &amp;nbsp;
&lt;br&gt;&amp;gt; Ruby
&lt;br&gt;&amp;gt; &amp;quot;Benchmark&amp;quot; library.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The script:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; #
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; require 'java'
&lt;br&gt;&amp;gt; require 'benchmark'
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; solr_dist_root = File.expand_path(File.join(File.dirname(__FILE__), &amp;nbsp;
&lt;br&gt;&amp;gt; '..',
&lt;br&gt;&amp;gt; 'apache-solr-1.3.0'))
&lt;br&gt;&amp;gt; solr_home = File.join(solr_dist_root, 'example', 'solr')
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; def require_jars(dir)
&lt;br&gt;&amp;gt; &amp;nbsp;jar_pattern = File.join(dir,&amp;quot;**&amp;quot;, &amp;quot;*.jar&amp;quot;)
&lt;br&gt;&amp;gt; &amp;nbsp;jar_files = Dir.glob(jar_pattern)
&lt;br&gt;&amp;gt; &amp;nbsp;jar_files.each {|jar_file| require jar_file}
&lt;br&gt;&amp;gt; end
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; def hash_to_params(hash_params)
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.solr.common.params.ModifiableSolrParams
&lt;br&gt;&amp;gt; &amp;nbsp;query = ModifiableSolrParams.new
&lt;br&gt;&amp;gt; &amp;nbsp;query.instance_eval do
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;alias _add add
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;def add(field, values)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;_add(field.to_s, (values.is_a?(Array) ? values :
&lt;br&gt;&amp;gt; [values]).to_java(:string))
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;end
&lt;br&gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt; &amp;nbsp;hash_params.each_pair do |k,v|
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;query.add k, v
&lt;br&gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt; &amp;nbsp;query
&lt;br&gt;&amp;gt; end
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; require_jars(File.join(solr_dist_root, &amp;quot;lib&amp;quot;))
&lt;br&gt;&amp;gt; require_jars(File.join(solr_dist_root, &amp;quot;dist&amp;quot;))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; # HttpCommons
&lt;br&gt;&amp;gt; def http_commons
&lt;br&gt;&amp;gt; &amp;nbsp;@http_commons ||= (
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;import org.apache.solr.common.params.MapSolrParams
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;solr = CommonsHttpSolrServer.new(&amp;quot;&lt;a href=&quot;http://localhost:8983/solr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://localhost:8983/solr&lt;/a&gt;&amp;quot;)
&lt;br&gt;&amp;gt; &amp;nbsp;)
&lt;br&gt;&amp;gt; end
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; # EmbeddedSolrServer
&lt;br&gt;&amp;gt; def embedded(solr_home)
&lt;br&gt;&amp;gt; &amp;nbsp;@embedded ||= (
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;import org.apache.solr.core.CoreContainer
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;import org.apache.solr.core.CoreDescriptor
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;import org.apache.solr.client.solrj.SolrQuery
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;core_name = 'main-core'
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;container = CoreContainer.new
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;descriptor = CoreDescriptor.new(container, core_name, solr_home)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;core = container.create(descriptor)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;container.register(core_name, core, false)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;solr = EmbeddedSolrServer.new(container, core_name)
&lt;br&gt;&amp;gt; &amp;nbsp;)
&lt;br&gt;&amp;gt; end
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; query = {'qt' =&amp;gt; 'standard', 'q'=&amp;gt;'ipod', 'facet.field' =&amp;gt; 'cat'}
&lt;br&gt;&amp;gt; params = hash_to_params(query)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; max = 1000
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Benchmark.bm do |x|
&lt;br&gt;&amp;gt; &amp;nbsp;x.report 'http commons' do
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;max.times do
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;http_commons.query(params)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;end
&lt;br&gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt; &amp;nbsp;x.report 'embedded' do
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;max.times do
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;embedded(solr_home).query(params)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;end
&lt;br&gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt; end
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; # THE RESULTS
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; # http commons
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;# 4.634000 &amp;nbsp; 0.000000 &amp;nbsp; 4.634000 ( &amp;nbsp;4.633849)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;# 4.454000 &amp;nbsp; 0.000000 &amp;nbsp; 4.454000 ( &amp;nbsp;4.453764)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;# 3.908000 &amp;nbsp; 0.000000 &amp;nbsp; 3.908000 ( &amp;nbsp;3.907367)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; # embedded
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;# 2.152000 &amp;nbsp; 0.000000 &amp;nbsp; 2.152000 ( &amp;nbsp;2.152226)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;# 2.191000 &amp;nbsp; 0.000000 &amp;nbsp; 2.191000 ( &amp;nbsp;2.191359)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;# 2.083000 &amp;nbsp; 0.000000 &amp;nbsp; 2.083000 ( &amp;nbsp;2.082696)
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/quick-jruby-%2B-solr-benchmarks-tp20691466p20692389.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20691466</id>
	<title>quick jruby + solr benchmarks</title>
	<published>2008-11-25T15:04:38Z</published>
	<updated>2008-11-25T15:04:38Z</updated>
	<author>
		<name>goodieboy</name>
	</author>
	<content type="html">I'm starting to experiment with benchmarks/jruby + solr and just wanted to
&lt;br&gt;get this out there -- getting ready for a week vacation :)
&lt;br&gt;&lt;br&gt;In my solr-ruby 'refactoring' progress, I'm finding some interesting results
&lt;br&gt;and will try to post in the next few weeks.
&lt;br&gt;&lt;br&gt;This is jruby 1.1.4 and solr 1.3 (empty index) -- using the standard Ruby
&lt;br&gt;&amp;quot;Benchmark&amp;quot; library.
&lt;br&gt;&lt;br&gt;The script:
&lt;br&gt;&lt;br&gt;#
&lt;br&gt;&lt;br&gt;require 'java'
&lt;br&gt;require 'benchmark'
&lt;br&gt;&lt;br&gt;solr_dist_root = File.expand_path(File.join(File.dirname(__FILE__), '..',
&lt;br&gt;'apache-solr-1.3.0'))
&lt;br&gt;solr_home = File.join(solr_dist_root, 'example', 'solr')
&lt;br&gt;&lt;br&gt;def require_jars(dir)
&lt;br&gt;&amp;nbsp; jar_pattern = File.join(dir,&amp;quot;**&amp;quot;, &amp;quot;*.jar&amp;quot;)
&lt;br&gt;&amp;nbsp; jar_files = Dir.glob(jar_pattern)
&lt;br&gt;&amp;nbsp; jar_files.each {|jar_file| require jar_file}
&lt;br&gt;end
&lt;br&gt;&lt;br&gt;def hash_to_params(hash_params)
&lt;br&gt;&amp;nbsp; import org.apache.solr.common.params.ModifiableSolrParams
&lt;br&gt;&amp;nbsp; query = ModifiableSolrParams.new
&lt;br&gt;&amp;nbsp; query.instance_eval do
&lt;br&gt;&amp;nbsp; &amp;nbsp; alias _add add
&lt;br&gt;&amp;nbsp; &amp;nbsp; def add(field, values)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; _add(field.to_s, (values.is_a?(Array) ? values :
&lt;br&gt;[values]).to_java(:string))
&lt;br&gt;&amp;nbsp; &amp;nbsp; end
&lt;br&gt;&amp;nbsp; end
&lt;br&gt;&amp;nbsp; hash_params.each_pair do |k,v|
&lt;br&gt;&amp;nbsp; &amp;nbsp; query.add k, v
&lt;br&gt;&amp;nbsp; end
&lt;br&gt;&amp;nbsp; query
&lt;br&gt;end
&lt;br&gt;&lt;br&gt;require_jars(File.join(solr_dist_root, &amp;quot;lib&amp;quot;))
&lt;br&gt;require_jars(File.join(solr_dist_root, &amp;quot;dist&amp;quot;))
&lt;br&gt;&lt;br&gt;# HttpCommons
&lt;br&gt;def http_commons
&lt;br&gt;&amp;nbsp; @http_commons ||= (
&lt;br&gt;&amp;nbsp; &amp;nbsp; import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer
&lt;br&gt;&amp;nbsp; &amp;nbsp; import org.apache.solr.common.params.MapSolrParams
&lt;br&gt;&amp;nbsp; &amp;nbsp; solr = CommonsHttpSolrServer.new(&amp;quot;&lt;a href=&quot;http://localhost:8983/solr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://localhost:8983/solr&lt;/a&gt;&amp;quot;)
&lt;br&gt;&amp;nbsp; )
&lt;br&gt;end
&lt;br&gt;&lt;br&gt;# EmbeddedSolrServer
&lt;br&gt;def embedded(solr_home)
&lt;br&gt;&amp;nbsp; @embedded ||= (
&lt;br&gt;&amp;nbsp; &amp;nbsp; import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer
&lt;br&gt;&amp;nbsp; &amp;nbsp; import org.apache.solr.core.CoreContainer
&lt;br&gt;&amp;nbsp; &amp;nbsp; import org.apache.solr.core.CoreDescriptor
&lt;br&gt;&amp;nbsp; &amp;nbsp; import org.apache.solr.client.solrj.SolrQuery
&lt;br&gt;&amp;nbsp; &amp;nbsp; core_name = 'main-core'
&lt;br&gt;&amp;nbsp; &amp;nbsp; container = CoreContainer.new
&lt;br&gt;&amp;nbsp; &amp;nbsp; descriptor = CoreDescriptor.new(container, core_name, solr_home)
&lt;br&gt;&amp;nbsp; &amp;nbsp; core = container.create(descriptor)
&lt;br&gt;&amp;nbsp; &amp;nbsp; container.register(core_name, core, false)
&lt;br&gt;&amp;nbsp; &amp;nbsp; solr = EmbeddedSolrServer.new(container, core_name)
&lt;br&gt;&amp;nbsp; )
&lt;br&gt;end
&lt;br&gt;&lt;br&gt;query = {'qt' =&amp;gt; 'standard', 'q'=&amp;gt;'ipod', 'facet.field' =&amp;gt; 'cat'}
&lt;br&gt;params = hash_to_params(query)
&lt;br&gt;&lt;br&gt;max = 1000
&lt;br&gt;&lt;br&gt;Benchmark.bm do |x|
&lt;br&gt;&amp;nbsp; x.report 'http commons' do
&lt;br&gt;&amp;nbsp; &amp;nbsp; max.times do
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; http_commons.query(params)
&lt;br&gt;&amp;nbsp; &amp;nbsp; end
&lt;br&gt;&amp;nbsp; end
&lt;br&gt;&amp;nbsp; x.report 'embedded' do
&lt;br&gt;&amp;nbsp; &amp;nbsp; max.times do
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; embedded(solr_home).query(params)
&lt;br&gt;&amp;nbsp; &amp;nbsp; end
&lt;br&gt;&amp;nbsp; end
&lt;br&gt;end
&lt;br&gt;&lt;br&gt;# THE RESULTS
&lt;br&gt;&lt;br&gt;# http commons
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 4.634000 &amp;nbsp; 0.000000 &amp;nbsp; 4.634000 ( &amp;nbsp;4.633849)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 4.454000 &amp;nbsp; 0.000000 &amp;nbsp; 4.454000 ( &amp;nbsp;4.453764)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 3.908000 &amp;nbsp; 0.000000 &amp;nbsp; 3.908000 ( &amp;nbsp;3.907367)
&lt;br&gt;&lt;br&gt;# embedded
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 2.152000 &amp;nbsp; 0.000000 &amp;nbsp; 2.152000 ( &amp;nbsp;2.152226)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 2.191000 &amp;nbsp; 0.000000 &amp;nbsp; 2.191000 ( &amp;nbsp;2.191359)
&lt;br&gt;&amp;nbsp; &amp;nbsp; # 2.083000 &amp;nbsp; 0.000000 &amp;nbsp; 2.083000 ( &amp;nbsp;2.082696)
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/quick-jruby-%2B-solr-benchmarks-tp20691466p20691466.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19978503</id>
	<title>ruby/json response for spellcheck component</title>
	<published>2008-10-14T10:36:57Z</published>
	<updated>2008-10-14T10:36:57Z</updated>
	<author>
		<name>goodieboy</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I'm working on a patch to support the new SpellCheckComponent in solr-ruby.
&lt;br&gt;I see that the response in some cases has duplicate keys. Here is an
&lt;br&gt;example:
&lt;br&gt;&lt;br&gt;'suggestions'=&amp;gt;[
&lt;br&gt;&lt;br&gt;'buk',{'numFound'=&amp;gt;5,'startOffset'=&amp;gt;0,'endOffset'=&amp;gt;3,'origFreq'=&amp;gt;0,'suggestion'=&amp;gt;{'frequency'=&amp;gt;27,'word'=&amp;gt;'bul'},'suggestion'=&amp;gt;{'frequency'=&amp;gt;5,'word'=&amp;gt;'bus'},'suggestion'=&amp;gt;{'frequency'=&amp;gt;3,'word'=&amp;gt;'bok'},'suggestion'=&amp;gt;{'frequency'=&amp;gt;3,'word'=&amp;gt;'buy'},'suggestion'=&amp;gt;{'frequency'=&amp;gt;2,'word'=&amp;gt;'bulk'}},
&lt;br&gt;&lt;br&gt;'bot',{'numFound'=&amp;gt;5,'startOffset'=&amp;gt;4,'endOffset'=&amp;gt;7,'origFreq'=&amp;gt;1,'suggestion'=&amp;gt;{'frequency'=&amp;gt;57,'word'=&amp;gt;'box'},'suggestion'=&amp;gt;{'frequency'=&amp;gt;20,'word'=&amp;gt;'tot'},'suggestion'=&amp;gt;{'frequency'=&amp;gt;20,'word'=&amp;gt;'both'},'suggestion'=&amp;gt;{'frequency'=&amp;gt;18,'word'=&amp;gt;'boy'},'suggestion'=&amp;gt;{'frequency'=&amp;gt;7,'word'=&amp;gt;'mot'}},
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'correctlySpelled',false,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'collation','bul box'
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]
&lt;br&gt;&lt;br&gt;When this is eval'd in Ruby, only the last instance of a duplicate key
&lt;br&gt;(suggestion) makes it (maybe I'm completely missing something though) - Was
&lt;br&gt;this the desired format and if so, anyone have any ideas on how to handle
&lt;br&gt;this sort of thing? I'd vote for changing 'suggestion'=&amp;gt;{} to
&lt;br&gt;'suggestions'=&amp;gt;[{},{}] etc..
&lt;br&gt;&lt;br&gt;Also, a possible gotcha for this format is... what if one of your terms was
&lt;br&gt;'suggestion' or 'collation'? The spellcheck response fields are mixed right
&lt;br&gt;in with the terms. What about having a separate key called 'terms':
&lt;br&gt;&lt;br&gt;'suggestions'=&amp;gt;[
&lt;br&gt;&amp;nbsp; 'collation', 'bul box',
&lt;br&gt;&amp;nbsp; 'correctlySpelled',false,
&lt;br&gt;&amp;nbsp; 'terms',[
&lt;br&gt;&amp;nbsp; &amp;nbsp; 'buk', {'numFound'=&amp;gt;5, 'suggestions'=&amp;gt;[{},{}]},
&lt;br&gt;&amp;nbsp; &amp;nbsp; 'bot', {'numFound'=&amp;gt;5m 'suggestions'=&amp;gt;[{},{}]}
&lt;br&gt;&amp;nbsp; ]
&lt;br&gt;]
&lt;br&gt;&lt;br&gt;etc..
&lt;br&gt;&lt;br&gt;Matt
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/ruby-json-response-for-spellcheck-component-tp19978503p19978503.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19890546</id>
	<title>DirectSolrConnection / JRuby</title>
	<published>2008-10-08T18:08:12Z</published>
	<updated>2008-10-08T18:08:12Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">DirectSolrConnection does work out pretty nicely:
&lt;br&gt;&lt;br&gt;&lt;br&gt;require 'java'
&lt;br&gt;require 'erb'
&lt;br&gt;&lt;br&gt;solr_dist_root = &amp;quot;/Users/erik/apache-solr-1.3.0&amp;quot;
&lt;br&gt;solr_home = &amp;quot;/Users/erik/apache-solr-1.3.0/example/solr&amp;quot;
&lt;br&gt;&lt;br&gt;def require_jars(dir)
&lt;br&gt;&amp;nbsp; &amp;nbsp;jar_pattern = File.join(dir,&amp;quot;**&amp;quot;, &amp;quot;*.jar&amp;quot;)
&lt;br&gt;&amp;nbsp; &amp;nbsp;jar_files = Dir.glob(jar_pattern)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;jar_files.each {|jar_file| require jar_file}
&lt;br&gt;end
&lt;br&gt;&lt;br&gt;require_jars(File.join(solr_dist_root, &amp;quot;lib&amp;quot;))
&lt;br&gt;require_jars(File.join(solr_dist_root, &amp;quot;dist&amp;quot;))
&lt;br&gt;&lt;br&gt;import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer
&lt;br&gt;import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer
&lt;br&gt;import org.apache.solr.core.CoreContainer
&lt;br&gt;import org.apache.solr.core.CoreDescriptor
&lt;br&gt;import org.apache.solr.common.params.ModifiableSolrParams
&lt;br&gt;import org.apache.solr.common.params.MapSolrParams
&lt;br&gt;import org.apache.solr.servlet.DirectSolrConnection
&lt;br&gt;&lt;br&gt;container = CoreContainer.new
&lt;br&gt;descriptor = CoreDescriptor.new(container, &amp;quot;core1&amp;quot;, solr_home)
&lt;br&gt;core = container.create(descriptor)
&lt;br&gt;container.register(&amp;quot;core1&amp;quot;, core, false)
&lt;br&gt;&lt;br&gt;class Request
&lt;br&gt;&amp;nbsp; &amp;nbsp;def initialize(params)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;@params = params
&lt;br&gt;&amp;nbsp; &amp;nbsp;end
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;def handler
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;'select'
&lt;br&gt;&amp;nbsp; &amp;nbsp;end
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;def content_type
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;'application/x-www-form-urlencoded; charset=utf-8'
&lt;br&gt;&amp;nbsp; &amp;nbsp;end
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;def to_s
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;http_params = []
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;@params.each do |key,value|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if value.respond_to? :each
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value.each { |v| http_params &amp;lt;&amp;lt; &amp;nbsp;
&lt;br&gt;&amp;quot;#{key}=#{ERB::Util::url_encode(v)}&amp;quot; unless v.nil?}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;http_params &amp;lt;&amp;lt; &amp;quot;#{key}=#{ERB::Util::url_encode(value)}&amp;quot; &amp;nbsp;
&lt;br&gt;unless value.nil?
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;end
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;http_params.join(&amp;quot;&amp;&amp;quot;)
&lt;br&gt;&amp;nbsp; &amp;nbsp;end
&lt;br&gt;end
&lt;br&gt;&lt;br&gt;solr = DirectSolrConnection.new(solr_home,File.join(solr_home,&amp;quot;solr&amp;quot;, &amp;nbsp;
&lt;br&gt;&amp;quot;data&amp;quot;),nil)
&lt;br&gt;request = Request.new(:qt =&amp;gt; 'standard', :q =&amp;gt; '*:*', 'facet.field' =&amp;gt; &amp;nbsp;
&lt;br&gt;['cat'], :wt=&amp;gt;'ruby')
&lt;br&gt;response = solr.request(&amp;quot;/#{request.handler}?#{request.to_s}&amp;quot;,nil)
&lt;br&gt;puts response
&lt;br&gt;solr.close
&lt;br&gt;core.close
&lt;br&gt;&lt;br&gt;The response is the raw String response, suitable for eval'ing if &amp;nbsp;
&lt;br&gt;wt=ruby.
&lt;br&gt;&lt;br&gt;So, for embedded SolrJRuby work, this will be the most transparent way &amp;nbsp;
&lt;br&gt;to go I think.
&lt;br&gt;&lt;br&gt;The question I have is whether we should concern ourselves with &amp;nbsp;
&lt;br&gt;SolrJ's CommonsHttpSolrServer? &amp;nbsp;I suspect if you're in a JRuby &amp;nbsp;
&lt;br&gt;environment that SolrJ's API will be faster performance-wise than &amp;nbsp;
&lt;br&gt;eval'ing Ruby responses. &amp;nbsp;Testing warranted for sure.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Fwd%3A-svn-commit%3A-r702993----lucene-solr-trunk-src-webapp-src-org-apache-solr-servlet-DirectSolrConnection.java-tp19888127p19890546.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19888127</id>
	<title>Fwd: svn commit: r702993 - /lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/DirectSolrConnection.java</title>
	<published>2008-10-08T14:37:51Z</published>
	<updated>2008-10-08T14:37:51Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">Ryan's commit reminded me of DirectSolrConnection - this looks like an &amp;nbsp;
&lt;br&gt;even easier thing to plug into solr-(j)ruby than EmbeddedSolrServer. &amp;nbsp; 
&lt;br&gt;I'll take a stab at that soon. &amp;nbsp;We still should support SolrServer and &amp;nbsp;
&lt;br&gt;what it offers, but DirectSolrConnection will make things more easily &amp;nbsp;
&lt;br&gt;transparent at first.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&lt;br&gt;&lt;br&gt;Begin forwarded message:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=19888127&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ryan@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Date: October 8, 2008 5:23:21 PM EDT
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=19888127&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;solr-commits@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Subject: svn commit: r702993 - /lucene/solr/trunk/src/webapp/src/org/ 
&lt;br&gt;&amp;gt; apache/solr/servlet/DirectSolrConnection.java
&lt;br&gt;&amp;gt; Reply-To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=19888127&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;solr-dev@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Author: ryan
&lt;br&gt;&amp;gt; Date: Wed Oct &amp;nbsp;8 14:23:21 2008
&lt;br&gt;&amp;gt; New Revision: 702993
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=702993&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=702993&amp;view=rev&lt;/a&gt;&lt;br&gt;&amp;gt; Log:
&lt;br&gt;&amp;gt; SOLR-721 -- DirectSolrConnection now uses CoreContainers
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Modified:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/ 
&lt;br&gt;&amp;gt; DirectSolrConnection.java
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Modified: lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/ 
&lt;br&gt;&amp;gt; DirectSolrConnection.java
&lt;br&gt;&amp;gt; URL: &lt;a href=&quot;http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/DirectSolrConnection.java?rev=702993&amp;r1=702992&amp;r2=702993&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/DirectSolrConnection.java?rev=702993&amp;r1=702992&amp;r2=702993&amp;view=diff&lt;/a&gt;&lt;br&gt;&amp;gt; = 
&lt;br&gt;&amp;gt; = 
&lt;br&gt;&amp;gt; = 
&lt;br&gt;&amp;gt; = 
&lt;br&gt;&amp;gt; = 
&lt;br&gt;&amp;gt; = 
&lt;br&gt;&amp;gt; = 
&lt;br&gt;&amp;gt; = 
&lt;br&gt;&amp;gt; ======================================================================
&lt;br&gt;&amp;gt; --- lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/ 
&lt;br&gt;&amp;gt; DirectSolrConnection.java (original)
&lt;br&gt;&amp;gt; +++ lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/ 
&lt;br&gt;&amp;gt; DirectSolrConnection.java Wed Oct &amp;nbsp;8 14:23:21 2008
&lt;br&gt;&amp;gt; @@ -29,8 +29,11 @@
&lt;br&gt;&amp;gt; import org.apache.solr.common.params.SolrParams;
&lt;br&gt;&amp;gt; import org.apache.solr.common.util.ContentStream;
&lt;br&gt;&amp;gt; import org.apache.solr.common.util.ContentStreamBase;
&lt;br&gt;&amp;gt; +import org.apache.solr.core.CoreContainer;
&lt;br&gt;&amp;gt; +import org.apache.solr.core.CoreDescriptor;
&lt;br&gt;&amp;gt; import org.apache.solr.core.SolrConfig;
&lt;br&gt;&amp;gt; import org.apache.solr.core.SolrCore;
&lt;br&gt;&amp;gt; +import org.apache.solr.core.SolrResourceLoader;
&lt;br&gt;&amp;gt; import org.apache.solr.request.QueryResponseWriter;
&lt;br&gt;&amp;gt; import org.apache.solr.request.SolrQueryRequest;
&lt;br&gt;&amp;gt; import org.apache.solr.request.SolrQueryResponse;
&lt;br&gt;&amp;gt; @@ -101,16 +104,19 @@
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp;// Initialize SolrConfig
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp;SolrConfig config = null;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;if( instanceDir == null ) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;instanceDir = SolrResourceLoader.locateInstanceDir();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;// Initialize
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp;config = new SolrConfig(instanceDir, &amp;nbsp;
&lt;br&gt;&amp;gt; SolrConfig.DEFAULT_CONF_FILE, null);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp;instanceDir = config.getResourceLoader().getInstanceDir();
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp;// If the Data directory is specified, initialize SolrCore &amp;nbsp;
&lt;br&gt;&amp;gt; directly
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp;IndexSchema schema = new IndexSchema(config, instanceDir+&amp;quot;/ 
&lt;br&gt;&amp;gt; conf/schema.xml&amp;quot;, null);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp;core = new SolrCore( null, dataDir, config, schema, null );
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp;parser = new SolrRequestParsers( config );
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;CoreContainer cores = new CoreContainer(new &amp;nbsp;
&lt;br&gt;&amp;gt; SolrResourceLoader(instanceDir));
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;SolrConfig solrConfig = new SolrConfig(instanceDir, &amp;nbsp;
&lt;br&gt;&amp;gt; SolrConfig.DEFAULT_CONF_FILE, null);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;CoreDescriptor dcore = new CoreDescriptor(cores, &amp;quot;&amp;quot;, &amp;nbsp;
&lt;br&gt;&amp;gt; solrConfig.getResourceLoader().getInstanceDir());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;IndexSchema indexSchema = new IndexSchema(solrConfig, &amp;nbsp;
&lt;br&gt;&amp;gt; instanceDir+&amp;quot;/conf/schema.xml&amp;quot;, null);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;core = new SolrCore( null, dataDir, solrConfig, indexSchema, &amp;nbsp;
&lt;br&gt;&amp;gt; dcore);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;cores.register(&amp;quot;&amp;quot;, core, false);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;parser = new SolrRequestParsers( solrConfig );
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; catch (Exception ee) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new RuntimeException(ee);
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Fwd%3A-svn-commit%3A-r702993----lucene-solr-trunk-src-webapp-src-org-apache-solr-servlet-DirectSolrConnection.java-tp19888127p19888127.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19850550</id>
	<title>Re: jruby and solrj</title>
	<published>2008-10-06T20:40:02Z</published>
	<updated>2008-10-06T20:40:02Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">I've created a simple bare minimum server.rb that - similar to SolrJ's &amp;nbsp;
&lt;br&gt;SolrServer abstraction in (currently mostly empty) methods.
&lt;br&gt;&lt;br&gt;And in test/ I've checked in a JRuby example showing the difference &amp;nbsp;
&lt;br&gt;between going through a pure Ruby API and the SolrJ API. &amp;nbsp;You can run &amp;nbsp;
&lt;br&gt;it this way from the root of the solr-ruby-refactoring branch:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; jruby -Ilib test/temp.rb
&lt;br&gt;&lt;br&gt;I think the goal is to achieve something like this being equivalent &amp;nbsp;
&lt;br&gt;for both MRI and SolrJ-Ruby, regardless of the solr object type:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;response = eval(solr.request(:qt =&amp;gt; 'standard', :q =&amp;gt; '*:*', &amp;nbsp;
&lt;br&gt;'facet.field' =&amp;gt; ['cat'], :wt=&amp;gt;'ruby'))
&lt;br&gt;&amp;nbsp; &amp;nbsp;puts response['response']['numFound']
&lt;br&gt;&lt;br&gt;Not quite sure where the eval belongs, so I left it out of &amp;nbsp;
&lt;br&gt;Solr::Server for now. &amp;nbsp;We want to be able to support raw responses &amp;nbsp;
&lt;br&gt;through solr-ruby also, for use cases like letting Solr's JSON &amp;nbsp;
&lt;br&gt;response pass through a Ruby application server (or perhaps even to &amp;nbsp;
&lt;br&gt;use JSON within solr-ruby, if it parses faster).
&lt;br&gt;&lt;br&gt;Shouldn't be too hard to get there from here, eh Matt?
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/jruby-and-solrj-tp19831340p19850550.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19845851</id>
	<title>Re: jruby and solrj</title>
	<published>2008-10-06T13:30:56Z</published>
	<updated>2008-10-06T13:30:56Z</updated>
	<author>
		<name>Erik Hatcher</name>
	</author>
	<content type="html">&lt;br&gt;On Oct 6, 2008, at 4:19 PM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt; Awesome, thanks Erik! I really like the idea of bypassing SolrQuery, &amp;nbsp;
&lt;br&gt;&amp;gt; and
&lt;br&gt;&amp;gt; just using a straight up Hash. It'll be even easier to keep the API
&lt;br&gt;&amp;gt; consistent between jruby and standard ruby now.
&lt;br&gt;&lt;br&gt;Here's a cute trick:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;query = {'qt' =&amp;gt; 'standard', 'q'=&amp;gt;'*:*', 'facet.field' =&amp;gt; 'cat'}
&lt;br&gt;&amp;nbsp; &amp;nbsp;response = solr.query(MapSolrParams.new(query))
&lt;br&gt;&lt;br&gt;But that doesn't work, as-is, with an array for the facet.field &amp;nbsp;
&lt;br&gt;parameter, nor does it work for symbols, so this doesn't work for two &amp;nbsp;
&lt;br&gt;reasons:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;solr.query(MapSolrParams.new(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; :qt =&amp;gt; 'standard', :q=&amp;gt;'*:*', 'facet.field' =&amp;gt; ['cat']
&lt;br&gt;&amp;nbsp; &amp;nbsp;)
&lt;br&gt;&lt;br&gt;Getting warmer! &amp;nbsp;:)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Erik
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/jruby-and-solrj-tp19831340p19845851.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19845599</id>
	<title>Re: jruby and solrj</title>
	<published>2008-10-06T13:19:10Z</published>
	<updated>2008-10-06T13:19:10Z</updated>
	<author>
		<name>goodieboy</name>
	</author>
	<content type="html">Awesome, thanks Erik! I really like the idea of bypassing SolrQuery, and
&lt;br&gt;just using a straight up Hash. It'll be even easier to keep the API
&lt;br&gt;consistent between jruby and standard ruby now.
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Mon, Oct 6, 2008 at 3:59 PM, Erik Hatcher &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=19845599&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;&amp;gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Unfortunately, to call varargs from JRuby (so I just learned from irc's
&lt;br&gt;&amp;gt; #jruby), you have to do this:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;query.add_facet_field(['cat'].to_java :string)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; anyway, for our solr-jruby purposes, i think we can stick to using the
&lt;br&gt;&amp;gt; ModifiableSolrParams API instead of SolrQuery, but we still get varargs
&lt;br&gt;&amp;gt; issues.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; thankfully Ruby solves this relatively nicely...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;solr = EmbeddedSolrServer.new(container, &amp;quot;core1&amp;quot;)
&lt;br&gt;&amp;gt; &amp;nbsp;query = ModifiableSolrParams.new
&lt;br&gt;&amp;gt; &amp;nbsp;def query.abcd(key, values)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;add(key,(values.is_a?(Array) ? values : [values]).to_java(:string))
&lt;br&gt;&amp;gt; &amp;nbsp;end
&lt;br&gt;&amp;gt; &amp;nbsp;query.abcd('q','*:*')
&lt;br&gt;&amp;gt; &amp;nbsp;query.abcd('facet.field',['cat'])
&lt;br&gt;&amp;gt; &amp;nbsp;response = solr.query(query)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; We'll just need to sprinkle a little Ruby fairy dust on some of this clunky
&lt;br&gt;&amp;gt; stuff. &amp;nbsp;It's not all that bad. &amp;nbsp;But the varargs one is strange to me, but
&lt;br&gt;&amp;gt; I'm sure there is some deep technical reason why that support isn't
&lt;br&gt;&amp;gt; intuitive.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Erik
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Oct 6, 2008, at 1:36 AM, Ryan McKinley wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;just guessing, but try passing that as a string[] rather then just a
&lt;br&gt;&amp;gt;&amp;gt; string
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The java function takes ( string ... v ) -- in java that means you can
&lt;br&gt;&amp;gt;&amp;gt; pass either a string or an array, or a variable length list of strings. &amp;nbsp;I'm
&lt;br&gt;&amp;gt;&amp;gt; guessing that does something funny with jruby
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; ryan
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Oct 5, 2008, at 10:54 PM, Matt Mitchell wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;I've been messing around with jRuby and SolrJ with nice results. But
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; can't
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; seem to get the SolrQuery.addFacetField method to work. I get this error:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;quot;for method addFacetField expected [[Ljava.lang.String;]; got:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [java.lang.String]; error: argument type mismatch (TypeError)&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I'm using it like:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; query.add_facet_field 'cat'
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; and also tried:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; query.addFacetField 'cat'
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Any ideas as to what I'm doing wrong?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Matt
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; p.s. The other methods I've tried work great: set_query, set_query_type,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; set_facet, set_facet_limit, set_facet_min_count, set_include_score,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; add_sort_field.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/jruby-and-solrj-tp19831340p19845599.html" />
</entry>

</feed>
