lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From thibault jouannic <diffli...@gmail.com>
Subject Re: Catchall field and facet search
Date Wed, 09 Sep 2009 16:20:10 GMT
Hi,

Thank you for the answer. Very helpful.

Regards,
Thibault.

On Wed, 09 Sep 2009 13:36:02 +0200
Uri Boness <uboness@gmail.com> wrote:

> Hi,
> 
> This is a bit tricky but I think you can achieve it as follows:
> 
> 1. have a field called "location_facet" which holds the logical path of 
> the location for each address (e.g. /Eurpoe/England/London)
> 2. have another multi valued filed "location_search" that holds all the 
> locations - your "catchall" field.
> 3. When the user searches for "England", perform the search on the 
> "location_search" field.
> 4. Always facet on the "location_facet" field
> 5. When you get the response, drop the most common prefix from all the 
> facet values, so for example if you search on "England":
> 
> returned facets:
> 
> /Europe/England/London..............5
> /Europe/England/Manchester........6
> /Europe/England/Liverpool...........3
> 
> after dropping the common prefix (which is /Europe/England):
> 
> London............5
> Manchester.....6
> Liverpool........3
> 
> note that theoretically (and perhaps even realistically) you might also 
> have multiple prefixes (for example, in the US you can definitely have 
> several cities with the same name in different states), in which case 
> you'd probably want to group these results by the prefix:
> 
> (for the sake of the argument, let's assume there's an "England" state 
> in the US :-))
> 
> /Europe/England
>   London............5
>   Manchester......6
>   Liverpool.........3
> 
> /North America/USA/England
>   AnotherCity..........10
> 
> On the client side, when the user clicks on one of the facet values, you 
> should use value path as a wildcard filter on the "location_facet" 
> field. For example, if the user click on London (the city in England), 
> the you should add the following filter:
> 
> location_facet:/Europe/England/London/*
> 
> this is a bit of manual work to do on the results, but I think it should 
> work, but maybe someone has a better idea on how to do it in a cleaner way.
> 
> cheers,
> Uri
> 
> thibault jouannic wrote:
> > Hi Solr users,
> >
> > This is my first post on this list, so nice to meet you.
> >
> > I need to do something with solr, but I have no idea how to achieve this. Let me
describe my problem.
> >
> > I'm building an address search engine. In my Solr schema, I've got many fields like
«country», «state», «town», «street».
> >
> > I want my users to search an address by location, so I've set up a catchall field
containing a copy of all the other fields. This is my default search field.
> >
> > I want to propose a dynamic facet search : if a user searches for the term «USA»,
the used facet.field will be «state», but if he searches for «Chicago», facet.field will
be «street». If a user is searching for an address in Chicago, it would be stupid to propose
a facet search on the «country» field, would'nt it?
> >
> > However, how can I know which field is matched ? If the user search «France»,
how can I know if this is a country or a town ?
> >
> > Is anybody has an idea?
> >
> > Best regards,
> > Thibault.
> >
> >
> >   

Mime
View raw message