lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "O'Regan, Mike" <MORe...@flr.follett.com>
Subject Difficulty with multifaceting (tag/ex)
Date Fri, 07 Dec 2012 22:53:22 GMT
I have a problem with multifaceting in Solr 4.0 and would appreciate any insight.

My base query returns the documents and facet counts I expect. After adding an fq the result
set of documents is smaller and the facet counts go down as expected.

What I want is the smaller result set but to have the facets counts ignore the fq. I see here
http://wiki.apache.org/solr/SimpleFacetParameters#Tagging_and_excluding_Filters that the way
to do that is to tag the fq and to exclude it in the facet.field.

I've implemented the syntax from the above documentation, and what I get is the before-I-added-the-fq
facet counts (good), and the original result set of documents (bad). Any ideas as to what
I could have missed?

Debug output on the original query:

  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">15</int>
    <lst name="params">
      <str name="facet">on</str>
      <str name="facet.mincount">1</str>
      <str name="facet.limit">50</str>
      <str name="wt">xml</str>
      <str name="rows">2500</str>
      <str name="df">title_tracings_t</str>
      <str name="fl">flrid,nodeid</str>
      <str name="debugQuery">true</str>
      <str name="facet.sort">count</str>
      <str name="q">(hiccup)</str>
      <str name="debug.explain.structured">true</str>
      <arr name="facet.field">
        <str>interestlevel</str>
        <str>availability</str>
      </arr>
    </lst>
  </lst>
  <result name="response" numFound="68" start="0">
  ...
  <lst name="facet_counts">
    <lst name="facet_queries"/>
    <lst name="facet_fields">
      <lst name="interestlevel">
        <int name="K-3">32</int>
        <int name="3-6">18</int>
        <int name="AD">7</int>
        <int name="5-8">1</int>
      </lst>
      <lst name="availability">
        <int name="U">37</int>
        <int name="A">29</int>
        <int name="N">2</int>
      </lst>
    </lst>
    <lst name="facet_dates"/>
    <lst name="facet_ranges"/>
  </lst>

and the query after having added the fq and the tag/ex syntax:

  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">17</int>
    <lst name="params">
      <str name="facet">on</str>
      <str name="facet.mincount">1</str>
      <str name="facet.limit">50</str>
      <str name="wt">xml</str>
      <str name="rows">2500</str>
      <str name="df">title_tracings_t</str>
      <str name="fl">flrid,nodeid</str>
      <str name="debugQuery">true</str>
      <str name="facet.sort">count</str>
      <str name="q">(hiccup)</str>
      <str name="debug.explain.structured">true</str>
      <arr name="facet.field">
        <str>{!ex=foo}interestlevel</str>
        <str>availability</str>
      </arr>
      <str name="fq">({!edismax tag=foo}interestlevel:AD)</str>
    </lst>
  </lst>
  <result name="response" numFound="68" start="0">
  ...
  <lst name="facet_counts">
    <lst name="facet_queries"/>
    <lst name="facet_fields">
      <lst name="interestlevel">
        <int name="K-3">32</int>
        <int name="3-6">18</int>
        <int name="AD">7</int>
        <int name="5-8">1</int>
      </lst>
      <lst name="availability">
        <int name="U">37</int>
        <int name="A">29</int>
        <int name="N">2</int>
      </lst>
    </lst>
    <lst name="facet_dates"/>
    <lst name="facet_ranges"/>
  </lst>

The only difference bewtween them is that the interestlevel facet is now "<str>{!ex=foo}interestlevel</str>"
and the addition of the fq "<str name="fq">({!edismax tag=foo}interestlevel:AD)</str>".

The parsed fq:

      <str name="QParser">LuceneQParser</str>
      <arr name="filter_queries">
        <str>({!edismax tag=foo}interestlevel:AD)</str>
      </arr>
      <arr name="parsed_filter_queries">
        <str>title_tracings_t:{!edismax TO tag=foo} interestlevel:AD</str>
      </arr>

If I remove the local params altogether, leaving just the fq, the result set and facets are
as expected:

    <result name="response" numFound="7" start="0">
    ...
    <lst name="facet_counts">
      <lst name="facet_queries"/>
      <lst name="facet_fields">
        <lst name="interestlevel">
          <int name="AD">7</int>
        </lst>
        <lst name="availability">
          <int name="U">4</int>
          <int name="A">3</int>
        </lst>
      </lst>
      <lst name="facet_dates"/>
      <lst name="facet_ranges"/>
    </lst>


I have some leads--possibly just red herrings--but have not made much progress on them so
far:

* The query that implements the tag/ex syntax does not compile unless I include "!dismax"
or "!edismax" in the new fq's local params. I don't know if this is relevant.

* Is the parsed fq info saying that the fq's local params (the tag=) with the df rather than
with the fq's field?

* I might be running into https://issues.apache.org/jira/browse/SOLR-3819

Thanks for your help,

Mike O'Regan

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message