lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bill Bell <billnb...@gmail.com>
Subject Re: MultiValued facet behavior question
Date Wed, 22 Jun 2011 07:44:03 GMT
Here is an example using exampledocs and trunk 4.0:

http://localhost:8983/solr/select/?q=cat:%22hard%20drive%22&version=2.2&sta
rt=0&rows=10&indent=on&facet=true&facet.field=cat&facet.query={!lucene}cat:
%22hard%20drive%22&facet.mincount=1

Results:

<result name="response" numFound="2" start="0">
Etc....
<lst name="facet_queries">
<int name="{!lucene}cat:"hard drive"">2</int>
</lst>
<lst name="facet_fields">
<lst name="cat">
    <int name="electronics">2</int>
    <int name="hard drive">2</int>
</lst></lst>

Notice that the facet_queries count "2" is the same as the the numFound=2.

But I have no way to use facet.field to count the matches.

The algorithm -

Loop through multiValued field and match on "hard drive". Ignore other
values in there when setting the facet list....




On 6/22/11 1:19 AM, "Dennis de Boer" <datdeboer@gmail.com> wrote:

>Hi Bill,
>
>yes, you absolutely do make sense. I posted the exact same question to
>this
>mailing list (subject: faceting on multivalued fields), but got no
>response
>out of it. A friend of mine is now helping out.
>
>I hope someone on the list can give us some advice. I'll post our findings
>to this topic.
>
>Regards,
>Dennis
>
>
>On Wed, Jun 22, 2011 at 5:37 AM, Bill Bell <billnbell@gmail.com> wrote:
>
>> Doing it with q=specialities:Cardiologist or
>> q=Cardiologist&defType=dismax&qf=specialties
>> does not matter, the issue is how I see facets. I want the facets to
>>only
>> show the one match,
>> and not all the multiValued fields in specialties that match...
>>
>> Example,
>>
>> Name|specialties
>> Bell|Cardiologist
>> Smith|Cardiologist,Family Doctor
>> Adams,Cardiologist,Family Doctor,Internist
>>
>> When I facet.field=specialties I get:
>>
>> Cardiologist: 3
>> Internist: 1
>> Family Doctor: 1
>>
>>
>> I only want it to return:
>>
>> Cardiologist: 3
>>
>> Because this matches exactly... Facet on the field that matches and only
>> return the number for that.
>>
>> It can get more complicated. Here is another example:
>>
>> q=cardiology&defType=dismax&qf=specialties
>>
>>
>> (Cardiology and cardiologist are stems)...
>>
>> But I don't really know which value in Cardiologist match perfectly.
>>
>> Again, I only want it to return:
>>
>> Cardiologist: 3
>>
>> If I searched on q=internist&defType=dismax&qf=specialties, I want the
>> result to be:
>>
>>
>> Internist: 1
>>
>>
>> Does this all make sense?
>>
>>
>>
>>
>>
>>
>>
>> On 6/21/11 8:23 PM, "Darren Govoni" <darren@ontrenet.com> wrote:
>>
>> >So are you saying that for all results for "cardiologist",
>> >you don't want facets not matching "Cardiologist" to be
>> >returned as facets?
>> >
>> >what happens when you make q=specialities:Cardiologist?
>> >instead of just q=Cardiologist?
>> >
>> >Seems that if you make the query on the field, then all
>> >your results will necessarily qualify and you can discard
>> >any additional facets you don't want (e.g. that don't
>> >match the initial query term).
>> >
>> >Maybe you can write what you see now, with what you
>> >want to help clarify.
>> >
>> >On 06/21/2011 09:47 PM, Bill Bell wrote:
>> >> I have a field: specialties that is multiValued.
>> >>
>> >> It indicates the doctor's specialties: cardiologist, internist, etc.
>> >>
>> >> When someone does a search: "Cardiologist", I use
>> >>
>> 
>>>>q=cardiologist&defType=dismax&qf=specialties&facet=true&facet.field=spe
>>>>ci
>> >>alt
>> >> ies
>> >>
>> >> What I want to come out in the facet is the Cardiologist (since it
>> >>matches
>> >> exactly) and the number that matches: 700.
>> >> I don't want to see the other values that are not Cardiologist.
>> >>
>> >> Now I see:
>> >>
>> >> Cardiologist: 700
>> >> Internist: 45
>> >> Family Doctor: 20
>> >>
>> >> This means that several Cardiologist's are also internists and family
>> >> doctors. When it matches exactly, I don't want to see Internists,
>>Family
>> >> Doctors. How do I send a query to Solr with a condition.
>> >> Facet.query=specialties:Cardiologist&facet.field=specialties
>> >>
>> >> Then if the query returns something use it, otherwise use the field
>>one?
>> >>
>> >> Other ideas?
>> >>
>> >>
>> >>
>> >>
>> >
>>
>>
>>



Mime
View raw message