Well, the JoinQParserPlugin is definitely there.  Turning on debug reveals why 
I get zero results.  Given the URL:

http://localhost:8091/solr/ing-content/select/?qt=partner-tmo&fq=type:node&q={!join+from=conceptId+to=id+fromIndex=partner-tmo}brca1&debugQuery=true&rows=5&fl=id,n_type,n_name

I get:

<response>
    <lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">1</int>
        <lst name="params">
            <str name="debugQuery">true</str>
            <str name="fl">id,n_type,n_name</str>
            <str name="q">{!join from=conceptId to=id 
fromIndex=partner-tmo}brca1</str>
            <str name="qt">partner-tmo</str>
            <str name="fq">type:node</str>
            <str name="rows">5</str>
        </lst>
    </lst>
    <result name="response" numFound="0" start="0"/>
    <lst name="debug">
        <str name="rawquerystring">{!join from=conceptId to=id 
fromIndex=partner-tmo}brca1</str>
        <str name="querystring">{!join from=conceptId to=id 
fromIndex=partner-tmo}brca1</str>
        <str name="parsedquery">JoinQuery({!join from=conceptId to=id 
fromIndex=partner-tmo}n_text:brca)</str>
        <str name="parsedquery_toString">{!join from=conceptId to=id 
fromIndex=partner-tmo}n_text:brca</str>
        <lst name="explain"/>
        <str name="QParser"/>
        <arr name="filter_queries">
            <str>type:node</str>
        </arr>
        <arr name="parsed_filter_queries">
            <str>type:node</str>
        </arr>
        ...
    </lst>
</response>

It looks like despite qt=partner-tmo, the edismax based search hander is being 
bypassed for the default search handler, and is querying against the n_text 
field, which is the defaultSearchField for the ing-conent core.  But, I don't 
want to use the default handler, but rather my configured edismax hander,  and 
any specified filter queries, to determine the document set in the ing-conent 
core, and then join with the partner-tmo core.  [Yes, the edismax handler in 
the ing-content core and the second core are both named partner-tmo].

Can the JoinQParserPlugin work in conjunction with edismax?

Thanks,

Jeff

On Dec 4, 2011, at 4:12 PM, Jeff Schmidt wrote:

> Hello again:
> 
> I'm looking at the newer join functionality 
> (http://wiki.apache.org/solr/Join) to see if that will help me out.  While 
> there are signs it can go cross index/core 
> (https://issues.apache.org/jira/browse/SOLR-2272), I doubt I can specify 
> facet.field params for fields in a couple of different indexes.  But, perhaps 
> a single combined index it might work.
> 
> Anyway, the above Jira item indicates status: resolved, resolution: fixed, 
> and Fix version/s: 4.0.  I've been working with 3.5.0, so I checked out 4.0 
> from svn today:
> 
> [imac:svn/dev/trunk] jas% svn info
> Path: .
> URL: http://svn.apache.org/repos/asf/lucene/dev/trunk
> Repository Root: http://svn.apache.org/repos/asf
> Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68
> Revision: 1210126
> ...
> Last Changed Rev: 1210116
> Last Changed Date: 2011-12-04 07:35:46 -0700 (Sun, 04 Dec 2011)
> 
> Issuing a join query looks like the local params syntax is being ignored and 
> is part of the search terms?  I get zero results, when w/o the join I get 979.
> 
> <response>
>    <lst name="responseHeader">
>        <int name="status">0</int>
>        <int name="QTime">1</int>
>        <lst name="params">
>            <str name="fl">id,n_type,n_name</str>
>            <str name="q">{!join from=conceptId to=id 
> fromIndex=partner-tmo}brca1</str>
>            <str name="qt">partner-tmo</str>
>            <str name="fq">type:node</str>
>            <str name="rows">5</str>
>        </lst>
>    </lst>
>    <result name="response" numFound="0" start="0"/>
> </response>
> 
> I've not yet fully explored this yet, and I'm not all that familiar with the 
> Solr codebase, but is this functionality in 4.x trunk or not? I can see there 
> is the package org.apache.lucene.search.join. Is this the implementation of 
> SOLR-2272?
> 
> I can see the commit was made earlier this year, and then it was reverted and 
> things went off the rails. I don't want to open any old wounds, but does the 
> join exist?  I not, I'll know not to pursue it any further. If so, is there 
> some solrconfig.xml configuration needed to enable it?  I don't see it in the 
> examples.
> 
> Thanks,
> 
> Jeff
> 
> On Dec 1, 2011, at 9:47 PM, Jeff Schmidt wrote:
> 
>> Hello:
>> 
>> I'm trying to relate together two different types of documents.  Currently I 
>> have 'node' documents that reside in one index (core), and 'product mapping' 
>> documents that are in another index.  The product mapping index is used to 
>> map tenant products to nodes. The nodes are canonical content that gets 
>> updated every quarter, where as the product mappings can change at any time.
>> 
>> I put them in two indexes because (1) canonical content changes rarely, and 
>> I don't want product mapping changes to affect it (commit, re-open searchers 
>> etc.), and I would like to support multiple tenants mapping products to the 
>> same canonical content to avoid duplication (a few GB).
>> 
>> This arrange has worked well thus far, but only in the sense that for each 
>> node result returned, I can query the product mapping index to determine the 
>> products mapped to the node.  I combine this information within my 
>> application and return it to the client.  This works okay in that there are 
>> only 5-20 results returned per page (start, rows).  But now I'm being asked 
>> to facet the product catagories (multi-valued field within a product mapping 
>> document) along with other facets defined in the canonical content.
>> 
>> Can this be done with Solr 3.5.0?  I've been looking into sub-queries, 
>> function queries etc.  Also, I've seen various postings indicating that one 
>> needs to denormalize more.  I don't want to add product information as 
>> fields to the canonical content. Not only does that defeat my objective (1) 
>> above, but Solr does not support incremental updates of document fields.
>> 
>> So, one approach is to issue by query to the canonical index and get all of 
>> the document IDs (could be 1000s), and then issue a filter query to the 
>> product mapping index with all of these IDs and have Solr facet the product 
>> categories.  Is that efficient?  I suppose I could use HTTP POST (via SolrJ) 
>> to convey that payload of IDs?  I could then take the facet results of that 
>> query and combine them with the canonical index results and return them to 
>> the client.
>> 
>> That may be do-able, but then let's say the user clicks on a product 
>> category facet value to narrow the node results to only those mapped to 
>> category XYZ. This will not affect the query issued against the canonical 
>> content index.  Instead, I think I'd have to go through the canonical 
>> results and eliminate the nodes that are not associated with product 
>> category XYZ.  Then, if the current page of results is inadequate (rows=10, 
>> but 3 nodes were eliminated), I'd have to go back to the canonical index to 
>> get more rows, eliminate some some again perhaps, get more etc.  That sounds 
>> unappealing and low performing.
>> 
>> Is there a Solr way to do this?  My Packt "Apache Solr 3 Enterprise Search 
>> Server" book (page 34) states regarding separate indices:
>> 
>>      "If you do develop separate schemas and if you need to search across 
>> your indices in one search then you must perform a distributed search, 
>> described in the last chapter. A distributed search is usually a feature 
>> employed for a large corpus but it applies here too."
>> 
>> But in the chapter it goes on to talk about dealing with sharding, 
>> replication etc. to support a large corpus, not necessarily tying together 
>> two different indexes.
>> 
>> Is it possible to accomplish my goal in a less ugly way than I outlined 
>> above?  Since we only have a single tenant to worry about, I could use a 
>> combined index at least for a few months (separate fields per document type, 
>> IDs are unique among then all) if that makes a difference.
>> 
>> Thanks!
>> 
>> Jeff
>> --
>> Jeff Schmidt
>> 535 Consulting
>> j...@535consulting.com
>> http://www.535consulting.com
>> (650) 423-1068
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
> 
> 
> 
> --
> Jeff Schmidt
> 535 Consulting
> j...@535consulting.com
> http://www.535consulting.com
> (650) 423-1068
> 
> 
> 
> 
> 
> 
> 
> 
> 



--
Jeff Schmidt
535 Consulting
j...@535consulting.com
http://www.535consulting.com
(650) 423-1068









Reply via email to