[ 
https://issues.apache.org/jira/browse/SOLR-13892?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16967880#comment-16967880
 ] 

Joel Bernstein commented on SOLR-13892:
---------------------------------------

I read through *JoinUtil* and:
{code:java}
package org.apache.lucene.search.join;

import java.io.IOException;
import java.util.Objects;

import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.search.MultiTermQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryVisitor;
import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.AttributeSource;
import org.apache.lucene.util.BytesRefHash;
import org.apache.lucene.util.RamUsageEstimator;

/**
 * A query that has an array of terms from a specific field. This query will 
match documents have one or more terms in
 * the specified field that match with the terms specified in the array.
 *
 * @lucene.experimental
 */
class TermsQuery extends MultiTermQuery implements Accountable {
 {code}
 

The join in this patch uses a very different strategy than JoinUtil / 
TermsQuery.

The postfilter in this patch is not the main optimization. The main 
optimization is in how the terms are collected from the from index and matched 
with the two index. Take a close look at the implementation of how terms are 
collected/sorted/matched between the two indexes. Notice the terms are sorted 
without sorting. Then the sort is used to merge to sorted list, by shortening 
the search space on the *to* side with each binary search into the DocValues 
term index. This is approach is extremely fast.

 

 

 

 

> Add postfilter support to {!join} queries
> -----------------------------------------
>
>                 Key: SOLR-13892
>                 URL: https://issues.apache.org/jira/browse/SOLR-13892
>             Project: Solr
>          Issue Type: Improvement
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: query parsers
>    Affects Versions: master (9.0)
>            Reporter: Jason Gerlowski
>            Priority: Major
>         Attachments: SOLR-13892.patch
>
>
> The JoinQParserPlugin would be a lot performant in many use-cases if it could 
> operate as a post-filter, especially when doc-values for the involved fields 
> are available.
> With this issue, I'd like to propose a post-filter implementation for the 
> {{join}} qparser.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to