Thank you for this. I had thought about it but reasoned in a naive way: who would do such a thing?
Doing so makes the query local: once the object has been retrieved, no further HTTP queries are required. Implementation perhaps entails one request to fetch the presumed parent in order to harvest its transitive closure. I need to think about that. Many thanks Jack On Thu, Mar 28, 2013 at 5:06 AM, Jens Grivolla <j+...@grivolla.net> wrote: > Exactly, you should usually design your schema to fit your queries, and if > you need to retrieve all ancestors then you should index all ancestors so > you can query for them easily. > > If that doesn't work for you then either Solr is not the right tool for the > job, or you need to rethink your schema. > > The description of doing lookups within a tree structure doesn't sound at > all like what you would use a text retrieval engine for, so you might want > to rethink why you want to use Solr for this. But if that "transitive > closure" is something you can calculate at indexing time then the correct > solution is the one Upayavira provided. > > If you want people to be able to help you you need to actually describe your > problem (i.e. what is my data, and what are my queries) instead of diving > into technical details like "reducing HTTP roundtrips". My guess is that if > you need to "reduce HTTP roundtrips" you're probably doing it wrong. > > HTH, > Jens > > > On 03/28/2013 08:15 AM, Upayavira wrote: >> >> Why don't you index all ancestor classes with the document, as a >> multivalued field, then you could get it in one hit. Am I missing >> something? >> >> Upayavira >> >> On Thu, Mar 28, 2013, at 01:59 AM, Jack Park wrote: >>> >>> Hi Otis, >>> That's essentially the answer I was looking for: each shard (are we >>> talking master + replicas?) has the plug-in custom query handler. I >>> need to build it to find out. >>> >>> What I mean is that there is a taxonomy, say one with a single root >>> for sake of illustration, which grows all the classes, subclasses, and >>> instances. If I have an object that is somewhere in that taxonomy, >>> then it has a zigzag chain of parents up that tree (I've seen that >>> called a "transitive closure". If class B is way up that tree from M, >>> no telling how many queries it will take to find it. Hmmm... >>> recursive ascent, I suppose. >>> >>> Many thanks >>> Jack >>> >>> On Wed, Mar 27, 2013 at 6:52 PM, Otis Gospodnetic >>> <otis.gospodne...@gmail.com> wrote: >>>> >>>> Hi Jack, >>>> >>>> I don't fully understand the exact taxonomy structure and your needs, >>>> but in terms of reducing the number of HTTP round trips, you can do it >>>> by writing a custom SearchComponent that, upon getting the initial >>>> request, does everything "locally", meaning that it talks to the >>>> local/specified shard before returning to the caller. In SolrCloud >>>> setup with N shards, each of these N shards could be queried in such a >>>> way in parallel, running query/queries on their local shards. >>>> >>>> Otis >>>> -- >>>> Solr & ElasticSearch Support >>>> http://sematext.com/ >>>> >>>> >>>> >>>> >>>> >>>> On Wed, Mar 27, 2013 at 3:11 PM, Jack Park <jackp...@topicquests.org> >>>> wrote: >>>>> >>>>> Hi Otis, >>>>> >>>>> I fully expect to grow to SolrCloud -- many shards. For now, it's >>>>> solo. But, my thinking relates to cloud. I look for ways to reduce the >>>>> number of HTTP round trips through SolrJ. Maybe you have some ideas? >>>>> >>>>> Thanks >>>>> Jack >>>>> >>>>> On Wed, Mar 27, 2013 at 10:04 AM, Otis Gospodnetic >>>>> <otis.gospodne...@gmail.com> wrote: >>>>>> >>>>>> Hi Jack, >>>>>> >>>>>> Is this really about HTTP and Solr vs. SolrCloud or more whether >>>>>> Solr(Cloud) is the right tool for the job and if so how to structure >>>>>> the schema and queries to make such lookups efficient? >>>>>> >>>>>> Otis >>>>>> -- >>>>>> Solr & ElasticSearch Support >>>>>> http://sematext.com/ >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Wed, Mar 27, 2013 at 12:53 PM, Jack Park <jackp...@topicquests.org> >>>>>> wrote: >>>>>>> >>>>>>> This is a question about "isA?" >>>>>>> >>>>>>> We want to know if M isA B isA?(M,B) >>>>>>> >>>>>>> For some M, one might be able to look into M to see its type or which >>>>>>> class(es) for which it is a subClass. We're talking taxonomic queries >>>>>>> now. >>>>>>> But, for some M, one might need to ripple up the "transitive >>>>>>> closure", >>>>>>> looking at all the super classes, etc, recursively. >>>>>>> >>>>>>> It seems unreasonable to do that over HTTP; it seems more reasonable >>>>>>> to grab a core and write a custom isA query handler. But, how do you >>>>>>> do that in a SolrCloud? >>>>>>> >>>>>>> Really curious... >>>>>>> >>>>>>> Many thanks in advance for ideas. >>>>>>> Jack >> >> > >