Solr
  1. Solr
  2. SOLR-3062

Solr4 Join query with fq not correctly filtering results

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 4.0-ALPHA
    • Fix Version/s: 4.0-ALPHA
    • Component/s: None
    • Labels:
      None

      Description

      filter queries are not properly filtering results when using a join query in solr4

      To replicate, use the attached patch file which contains a test method that will fail (but should pass).

      OR

      run the solr example:

      cd solr
      ant example
      java -jar start.jar
      cd exampledocs
      java -jar post.jar *.xml

      Then try a few of the sample queries on the wiki page http://wiki.apache.org/solr/Join. In particular, this is illustrates the issue:

      Find all manufacturer docs named "belkin", then join them against (product) docs and filter that list to only products with a price less than 12 dollars
      http://localhost:8983/solr/select?q=

      {!join+from=id+to=manu_id_s}

      compName_s:Belkin&fq=price:%5B%2A+TO+12%5D

      When you run that query, you will get two results, one with a price of 19.95 and another with a price of 11.5 Because of the filter query, I'm only expecting to see one result - the one with a price of 11.99.

      I was able to track this down to a change in revision #1188624 (http://svn.apache.org/viewvc?view=revision&revision=1188624 : LUCENE-1536: Filters can now be applied down-low, if their DocIdSet implements a new bits() method, returning all documents in a random access way). Prior to that revision (i.e. 1188613 and before) the test method will pass and the example will work as expected.

        Issue Links

          Activity

          Transition Time In Source Status Execution Times Last Executer Last Execution Date
          Open Open Resolved Resolved
          5d 21h 41m 1 Yonik Seeley 02/Feb/12 01:43
          Resolved Resolved Closed Closed
          463d 8h 55m 1 Uwe Schindler 10/May/13 11:39
          Uwe Schindler made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          Yonik Seeley made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Fix Version/s 4.0 [ 12314992 ]
          Resolution Fixed [ 1 ]
          Hide
          Yonik Seeley added a comment -

          Fix committed.

          Show
          Yonik Seeley added a comment - Fix committed.
          Yonik Seeley made changes -
          Link This issue is broken by LUCENE-1536 [ LUCENE-1536 ]
          Yonik Seeley made changes -
          Assignee Yonik Seeley [ yseeley@gmail.com ]
          Hide
          Yonik Seeley added a comment -

          Note: as Hoss pointed out, the commits shown in this issue to date are actually for SOLR-3069

          Show
          Yonik Seeley added a comment - Note: as Hoss pointed out, the commits shown in this issue to date are actually for SOLR-3069
          Mike Hugo made changes -
          Description filter queries are not properly filtering results when using a join query in solr4

          To replicate, use the attached patch file which contains a test method that will fail (but should pass).

          - OR -

          run the solr example:

          cd solr
          ant example
          java -jar start.jar
          cd exampledocs
          java -jar post.jar *.xml

          Then try a few of the sample queries on the wiki page http://wiki.apache.org/solr/Join. In particular, this is illustrates the issue:

          Find all manufacturer docs named "belkin", then join them against (product) docs and filter that list to only products with a price less than 12 dollars
          http://localhost:8983/solr/select?q={!join+from=id+to=manu_id_s}compName_s:Belkin&fq=price:%5B%2A+TO+12%5D

          When you run that query, you will get two results, one with a price of 19.95 and another with a price of 11.5 Because of the filter query, I'm only expecting to see one result - the one with a price of 11.99.

          I was able to track this down to a change in revision #1188624. Prior to that revision (i.e. 1188613 and before) the test method will pass and the example will work as expected.

          filter queries are not properly filtering results when using a join query in solr4

          To replicate, use the attached patch file which contains a test method that will fail (but should pass).

          OR

          run the solr example:

          cd solr
          ant example
          java -jar start.jar
          cd exampledocs
          java -jar post.jar *.xml

          Then try a few of the sample queries on the wiki page http://wiki.apache.org/solr/Join. In particular, this is illustrates the issue:

          Find all manufacturer docs named "belkin", then join them against (product) docs and filter that list to only products with a price less than 12 dollars
          http://localhost:8983/solr/select?q={!join+from=id+to=manu_id_s}compName_s:Belkin&fq=price:%5B%2A+TO+12%5D

          When you run that query, you will get two results, one with a price of 19.95 and another with a price of 11.5 Because of the filter query, I'm only expecting to see one result - the one with a price of 11.99.

          I was able to track this down to a change in revision #1188624 (http://svn.apache.org/viewvc?view=revision&revision=1188624 : LUCENE-1536: Filters can now be applied down-low, if their DocIdSet implements a new bits() method, returning all documents in a random access way). Prior to that revision (i.e. 1188613 and before) the test method will pass and the example will work as expected.

          Mike Hugo made changes -
          Field Original Value New Value
          Attachment join_filter_query_problem.patch [ 12512075 ]
          Mike Hugo created issue -

            People

            • Assignee:
              Yonik Seeley
              Reporter:
              Mike Hugo
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development