Gerald:
Here's the place to start: http://wiki.apache.org/solr/HowToContribute

But the basic setup is
1> create a JIRA login (anyone can)
2> create a JIRA if one doesn't exist
3> generate the patch. From your root level (the one that contains "solr"
and "lucene" dirs) and "svn diff > SOLR-###.patch" wher e### is the Solr
JIRA from <2>
4> upload the patch to the Jira
5> prompt the JIRA occasionally if nobody picks it up <G>...

GIT patches work too, but I'm Git-naive

Happy Hacking!
Erick


On Wed, Nov 14, 2012 at 5:43 PM, Gerald Blanck <
gerald.bla...@barometerit.com> wrote:

> Mikhail-
>
> Let me know how to contribute a test case and I will put it on my to do
> list.
>
> When your many-to-many BlockJoin solution matures I would love to see it.
>
> Thanks.
> -Gerald
>
>
> On Tue, Nov 13, 2012 at 11:52 PM, Mikhail Khludnev <
> mkhlud...@griddynamics.com> wrote:
>
> > Gerald,
> > Nice to hear the the your problem is solved. Can you contribute a test
> > case to reproduce this issue?
> >
> > FWIW, my team successfully deals with Many-to-Many in BlockJoin. It
> works,
> > but solution is a little bit immature yet.
> >
> >
> >
> > On Wed, Nov 14, 2012 at 5:59 AM, Gerald Blanck <
> > gerald.bla...@barometerit.com> wrote:
> >
> >> Thank you Mikhail.  Unfortunately BlockJoinQuery is not an option we can
> >> leverage.
> >>
> >> - We have modeled our document types as different indexes/cores.
> >> - Our relationships which we are attempting to join across are not
> >> single-parent to many-children relationships.  They are in fact many to
> >> many.
> >> - Additionally, memory usage is a concern.
> >>
> >> FYI.  After making the code change I mentioned in my original post, we
> >> have completed a full test cycle and did not experience any adverse
> impacts
> >> to the change.  And our join query functionality returns the results we
> >> wanted.  I would still be interested in hearing an explanation as to why
> >> the code is written as it is in v4.0.0.
> >>
> >> Thanks.
> >>
> >>
> >>
> >>
> >> On Tue, Nov 13, 2012 at 8:31 AM, Mikhail Khludnev <
> >> mkhlud...@griddynamics.com> wrote:
> >>
> >>> Please find reference materials
> >>>
> >>>
> >>>
> http://blog.mikemccandless.com/2012/01/searching-relational-content-with.html
> >>> http://blog.griddynamics.com/2012/08/block-join-query-performs.html
> >>>
> >>>
> >>>
> >>>
> >>> On Tue, Nov 13, 2012 at 3:25 PM, Gerald Blanck <
> >>> gerald.bla...@barometerit.com> wrote:
> >>>
> >>>> Thank you.  I've not heard of BlockJoin.  I will look into it today.
> >>>>  Thanks.
> >>>>
> >>>>
> >>>> On Tue, Nov 13, 2012 at 5:05 AM, Mikhail Khludnev <
> >>>> mkhlud...@griddynamics.com> wrote:
> >>>>
> >>>>> Replied. pls check maillist.
> >>>>>
> >>>>>
> >>>>>
> >>>>> On Tue, Nov 13, 2012 at 11:44 AM, Mikhail Khludnev <
> >>>>> mkhlud...@griddynamics.com> wrote:
> >>>>>
> >>>>>> Gerald,
> >>>>>>
> >>>>>> I wonder if you tried to approach BlockJoin for your problem? Can
> you
> >>>>>> afford less frequent updates?
> >>>>>>
> >>>>>>
> >>>>>> On Wed, Nov 7, 2012 at 5:40 PM, Gerald Blanck <
> >>>>>> gerald.bla...@barometerit.com> wrote:
> >>>>>>
> >>>>>>> Thank you Erick for your reply.  I understand that search is not an
> >>>>>>> RDBMS.
> >>>>>>>  Yes, we do have a huge combinatorial explosion if we de-normalize
> >>>>>>> and
> >>>>>>> duplicate data.  In fact, I believe our use case is exactly what
> the
> >>>>>>> Solr
> >>>>>>> developers were trying to solve with the addition of the Join
> query.
> >>>>>>>  And
> >>>>>>> while the example I gave illustrates the problem we are solving
> with
> >>>>>>> the
> >>>>>>> Join functionality, it is simplistic in nature compared to what we
> >>>>>>> have in
> >>>>>>> actuality.
> >>>>>>>
> >>>>>>> Am still looking for an answer here if someone can shed some light.
> >>>>>>>  Thanks.
> >>>>>>>
> >>>>>>>
> >>>>>>> On Sat, Nov 3, 2012 at 9:38 PM, Erick Erickson <
> >>>>>>> erickerick...@gmail.com>wrote:
> >>>>>>>
> >>>>>>> > I'm going to go a bit sideways on you, partly because I can't
> >>>>>>> answer the
> >>>>>>> > question <G>...
> >>>>>>> >
> >>>>>>> > But, every time I see someone doing what looks like substituting
> >>>>>>> "core" for
> >>>>>>> > "table" and
> >>>>>>> > then trying to use Solr like a DB, I get on my soap-box and
> >>>>>>> preach......
> >>>>>>> >
> >>>>>>> > In this case, consider de-normalizing your DB so you can ask the
> >>>>>>> query in
> >>>>>>> > terms
> >>>>>>> > of search rather than joins. e.g.
> >>>>>>> >
> >>>>>>> > Make each document a combination of the author and the book, with
> >>>>>>> an
> >>>>>>> > additional
> >>>>>>> > field "author_has_written_a_bestseller". Now your query becomes a
> >>>>>>> really
> >>>>>>> > simple
> >>>>>>> > search, "author:name AND author_has_written_a_bestseller:true".
> >>>>>>> True, this
> >>>>>>> > kind
> >>>>>>> > of approach isn't as flexible as an RDBMS, but it's a _search_
> >>>>>>> rather than
> >>>>>>> > a query.
> >>>>>>> > Yes, it replicates data, but unless you have a huge combinatorial
> >>>>>>> > explosion, that's
> >>>>>>> > not a problem.
> >>>>>>> >
> >>>>>>> > And the join functionality isn't called "pseudo" for nothing. It
> >>>>>>> was
> >>>>>>> > written for a specific
> >>>>>>> > use-case. It is often expensive, especially when the field being
> >>>>>>> joined has
> >>>>>>> > many unique
> >>>>>>> > values.
> >>>>>>> >
> >>>>>>> > FWIW,
> >>>>>>> > Erick
> >>>>>>> >
> >>>>>>> >
> >>>>>>> > On Fri, Nov 2, 2012 at 11:32 AM, Gerald Blanck <
> >>>>>>> > gerald.bla...@barometerit.com> wrote:
> >>>>>>> >
> >>>>>>> > > At a high level, I have a need to be able to execute a query
> >>>>>>> that joins
> >>>>>>> > > across cores, and that query during its joining may join back
> to
> >>>>>>> the
> >>>>>>> > > originating core.
> >>>>>>> > >
> >>>>>>> > > Example:
> >>>>>>> > > Find all Books written by an Author who has written a best
> >>>>>>> selling Book.
> >>>>>>> > >
> >>>>>>> > > In Solr query syntax
> >>>>>>> > > A) against the book core - bestseller:true
> >>>>>>> > > B) against the author core - {!join fromIndex=book from=id
> >>>>>>> > > to=bookid}bestseller:true
> >>>>>>> > > C) against the book core - {!join fromIndex=author from=id
> >>>>>>> > > to=authorid}{!join fromIndex=book from=id
> >>>>>>> to=bookid}bestseller:true
> >>>>>>> > >
> >>>>>>> > > A - returns results
> >>>>>>> > > B - returns results
> >>>>>>> > > C - does not return results
> >>>>>>> > >
> >>>>>>> > > Given that A and C use the same core, I started looking for
> join
> >>>>>>> code
> >>>>>>> > that
> >>>>>>> > > compares the originating core to the fromIndex and found this
> >>>>>>> > > in JoinQParserPlugin (line #159).
> >>>>>>> > >
> >>>>>>> > >         if (info.getReq().getCore() == fromCore) {
> >>>>>>> > >
> >>>>>>> > >           // if this is the same core, use the searcher passed
> >>>>>>> in...
> >>>>>>> > > otherwise we could be warming and
> >>>>>>> > >
> >>>>>>> > >           // get an older searcher from the core.
> >>>>>>> > >
> >>>>>>> > >           fromSearcher = searcher;
> >>>>>>> > >
> >>>>>>> > >         } else {
> >>>>>>> > >
> >>>>>>> > >           // This could block if there is a static warming
> query
> >>>>>>> with a
> >>>>>>> > > join in it, and if useColdSearcher is true.
> >>>>>>> > >
> >>>>>>> > >           // Deadlock could result if two cores both had
> >>>>>>> useColdSearcher
> >>>>>>> > > and had joins that used eachother.
> >>>>>>> > >
> >>>>>>> > >           // This would be very predictable though (should
> >>>>>>> happen every
> >>>>>>> > > time if misconfigured)
> >>>>>>> > >
> >>>>>>> > >           fromRef = fromCore.getSearcher(false, true, null);
> >>>>>>> > >
> >>>>>>> > >
> >>>>>>> > >           // be careful not to do anything with this searcher
> >>>>>>> that
> >>>>>>> > requires
> >>>>>>> > > the thread local
> >>>>>>> > >
> >>>>>>> > >           // SolrRequestInfo in a manner that requires the core
> >>>>>>> in the
> >>>>>>> > > request to match
> >>>>>>> > >
> >>>>>>> > >           fromSearcher = fromRef.get();
> >>>>>>> > >
> >>>>>>> > >         }
> >>>>>>> > >
> >>>>>>> > > I found that if I were to modify the above code so that it
> >>>>>>> always follows
> >>>>>>> > > the logic in the else block, I get the results I expect.
> >>>>>>> > >
> >>>>>>> > > Can someone explain to me why the code is written as it is?
>  And
> >>>>>>> if we
> >>>>>>> > were
> >>>>>>> > > to run with only the else block being executed, what type of
> >>>>>>> adverse
> >>>>>>> > > impacts we might have?
> >>>>>>> > >
> >>>>>>> > > Does anyone have other ideas on how to solve this issue?
> >>>>>>> > >
> >>>>>>> > > Thanks in advance.
> >>>>>>> > > -Gerald
> >>>>>>> > >
> >>>>>>> >
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>>
> >>>>>>> *Gerald Blanck*
> >>>>>>>
> >>>>>>> baro*m*eter*IT*
> >>>>>>>
> >>>>>>> 1331 Tyler Street NE, Suite 100
> >>>>>>> Minneapolis, MN 55413
> >>>>>>>
> >>>>>>>
> >>>>>>> 612.208.2802
> >>>>>>>
> >>>>>>> gerald.bla...@barometerit.com
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Sincerely yours
> >>>>>> Mikhail Khludnev
> >>>>>> Principal Engineer,
> >>>>>> Grid Dynamics
> >>>>>>
> >>>>>> <http://www.griddynamics.com>
> >>>>>>  <mkhlud...@griddynamics.com>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Sincerely yours
> >>>>> Mikhail Khludnev
> >>>>> Principal Engineer,
> >>>>> Grid Dynamics
> >>>>>
> >>>>> <http://www.griddynamics.com>
> >>>>>  <mkhlud...@griddynamics.com>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>> --
> >>>>
> >>>> *Gerald Blanck*
> >>>>
> >>>> baro*m*eter*IT*
> >>>>
> >>>> 1331 Tyler Street NE, Suite 100
> >>>> Minneapolis, MN 55413
> >>>>
> >>>>
> >>>> 612.208.2802
> >>>>
> >>>> gerald.bla...@barometerit.com
> >>>>
> >>>>
> >>>
> >>>
> >>> --
> >>> Sincerely yours
> >>> Mikhail Khludnev
> >>> Principal Engineer,
> >>> Grid Dynamics
> >>>
> >>> <http://www.griddynamics.com>
> >>>  <mkhlud...@griddynamics.com>
> >>>
> >>>
> >>
> >>
> >> --
> >>
> >> *Gerald Blanck*
> >>
> >> baro*m*eter*IT*
> >>
> >> 1331 Tyler Street NE, Suite 100
> >> Minneapolis, MN 55413
> >>
> >>
> >> 612.208.2802
> >>
> >> gerald.bla...@barometerit.com
> >>
> >>
> >
> >
> > --
> > Sincerely yours
> > Mikhail Khludnev
> > Principal Engineer,
> > Grid Dynamics
> >
> > <http://www.griddynamics.com>
> >  <mkhlud...@griddynamics.com>
> >
> >
>
>
> --
>
> *Gerald Blanck*
>
> baro*m*eter*IT*
>
> 1331 Tyler Street NE, Suite 100
> Minneapolis, MN 55413
>
>
> 612.208.2802
>
> gerald.bla...@barometerit.com
>

Reply via email to